Byłem niedawno dyskusji następującej składni Ruby z kolegą:jeśli instrukcja po przypisaniu zmiennych - jak często?
value = if a == 0
"foo"
elsif a > 42
"bar"
else
"fizz"
end
Nie widziałem tego rodzaju logiką znacznie osobiście, ale mój kolega stwierdza, że jest to rzeczywiście dość powszechne Rubyism. Próbowałem googlować w temacie i nie znalazłem żadnych artykułów, stron ani pytań SO na temat tego tematu, co sprawiło, że sądzę, że może to być bardzo rzeczowa technika. Innym kolega jednak znajdzie składnia mylące i zamiast tego napisać powyższą logiką takiego:
if a == 0
value = "foo"
elsif a > 42
value = "bar"
else
value = "fizz"
end
Wadą istnienia powtarzanych deklaracji value =
i utratę niejawny else nil
, jeśli chcemy go używać. To także sprawia wrażenie, że zawiera wiele innych funkcji syntaktycznego cukru znalezionych w Ruby.
Moje pytanie brzmi, jak powszechna jest ta technika w Rubim? Czy istnieje jakaś zgoda co do tego, czy wspólnota czuje, że powinno się jej używać lub jej unikać?
Powiedziałbym, że to dość idiomatyczne. Często go używam. –
Uwaga: nie jest to stwierdzenie "jeśli", jest to wyrażenie "jeśli" *, które jest dokładnie * dlaczego * to działa w pierwszej kolejności. (W rzeczywistości nie ma żadnych zdań w Ruby, wszystko jest wyrażeniem i wszystko zwraca wartość.) –
Jest podobne do 'x = case (y); kiedy .... 'i' x = (y = 3)? 3: 1', które są powszechne. –