wiem Ruby obsługuje przyrostek if
jak:Jaki jest cel używania sufiksu "if" w Ruby?
number = -42 if opposite
ale to, co jest celem tego? Dlaczego miałby on być używany zamiast oświadczenia prefiksu if
?
wiem Ruby obsługuje przyrostek if
jak:Jaki jest cel używania sufiksu "if" w Ruby?
number = -42 if opposite
ale to, co jest celem tego? Dlaczego miałby on być używany zamiast oświadczenia prefiksu if
?
Jest taki sam jak przedrostek, ale krócej. Jedynym powodem jest zachowanie pionowej przestrzeni w edytorze tekstu.
Może to ułatwić czytanie kodu w niektórych przypadkach. Uważam, że jest to prawda, szczególnie w przypadku unless
, gdzie masz jakieś działanie Państwo zwykle chcesz wykonać:
number = -42 unless some_unusual_circumstance_holds
Gdy masz go za unless
, dla symetrii ma sens wspierać go if
także.
Nie rozumiem, dlaczego mówisz "jeśli" tylko pośrednio Jeśli masz "chyba" dla rzeczy, które zwykle chcesz wspierać, masz "jeśli" dla rzeczy, które wyjątkowo chcesz wspierać. – sawa
number = -42 if opposite
jest taka sama jak
if opposite
number = -42
end
Niektórzy ludzie preferują jedną wkładkę ze względów czytelności. Wyobraź sobie linię podobną do:
process_payment if order_fulfilled?
Czy to nie jest miłe?
Przyrostek stylu if
i unless
może być dobry dla "klauzul ochronnych", w formie:
return if ...
return unless ...
Oto przykład:
# suffix-style
def save
return false if invalid?
# go for it
true
end
Versus:
# indented style
def save
if valid?
# go for it
true
else
false
end
end
W drugim przykładzie cała implementacja metody ma o przesuń się o jedno wcięcie ze względu na sprawdzanie valid?
i potrzebujemy dodatkowej klauzuli else
. W stylu sufiksu kontrola invalid?
jest uznawana za skrzynkę krawędziową, którą obsługujemy, a następnie wyskakujemy, a pozostała część metody nie wymaga klauzuli indent lub else
.
Jest to czasami określane jako "klauzula strażnicza" i jest oznaczone jako recommended przez przewodnik stylowy Ruby.
@vgoff Edytowałem swoją odpowiedź, aby wyjaśnić, że przykładowy kod powinien zwracać różne wartości dla poprawnych i nieprawidłowych ścieżek kodu. –
Styl Postfix nie ma sekcji else
. Jest to przydatne, gdy chcesz zrobić coś tylko z jednym z dwóch przypadków podzielonych przez warunek i nie chcesz zadzierzgnąć z innym przypadkiem.
Myślę, że ta forma "sprytnego" zadania jest brzydka, ale w innych przypadkach: 'raise some_exception if something_bad'. – user2864740
Ruby ma to, ponieważ Perl ma to, Perl ma to, ponieważ (AFAIK) czasami czyta się lepiej. –
@ user2864740, Całkowicie się z Tobą zgadzam. Pamiętam, jak czytałem wiersz "Wszystko dobrze, jeśli wszystko się dobrze kończy" i myśląc, o ile lepiej byłoby, gdyby: "Jeśli wszystko się dobrze skończy, wszystko jest w porządku". –