W Ruby można użyć Array#join do prostego łączenia wielu ciągów za pomocą opcjonalnego ogranicznika.Wylicz wiele wyrażeń logicznych, takich jak Array # join in Ruby
[ "a", "b", "c" ].join #=> "abc"
[ "a", "b", "c" ].join("-") #=> "a-b-c"
Zastanawiam się, czy nie jest ładny cukier syntaktyczny zrobić coś podobnego z pęczek wyrażeń logicznych. Na przykład muszę &&
kilka wyrażeń razem. Jednak, które wyrażenia będą używane, zależy od danych wprowadzanych przez użytkownika. Więc zamiast robić kilka
cumulative_value &&= expression[:a] if user[:input][:a]
Chcę zebrać wszystkie wyrażenia oparte pierwszy na wejściu, a następnie &&
je wszystkie razem w jednym zamachem. Coś takiego:
be1 = x > y
be2 = Proc.new {|string, regex| string =~ regex}
be3 = z < 5 && my_object.is_valid?
[be1,be2.call("abc",/*bc/),be3].eval_join(&&)
Czy jest jakieś takie urządzenie w Ruby domyślnie? Chcę tylko trochę cukru syntetycznego, żeby kod był czystszy, jeśli to możliwe.
Czy chcesz, aby każda część przyjmowała argumenty i zmieniała się dynamicznie, czy też zostały one wcześniej ustalone? Na przykład 'be1' nie ma sensu, dopóki' x' i 'y 'nie są już podane, w takim przypadku będzie to stała albo" prawda "lub" fałsz ", ale' be2' jest proc, który zawsze ocenia do prawdziwej wartości, która jest również stała i nie miałaby większego sensu, chyba że zastosujesz to do pewnych argumentów. Wygląda na to, że je mieszasz. – sawa