Иногда вы хотите использовать модификатор if
/ unless
, но условно исполняемая часть включает в себя локальную переменную, которая должна быть определена в условии.Например,
a = [1, 2, 3]
n = 3*(x**2) + 4*x + 5 if x = a[2]
m = 6*(y**2) + 7*y + 8 unless (y = a[0]).zero?
выдаст ошибку синтаксического анализа, поскольку x
, y
читается перед модификатором if
/ unless
.Чтобы избежать этого, я думаю, что довольно часто (по крайней мере для меня) используется and
вместо if
и or
вместо unless
:
x = a[2] and n = 3*(x**2) + 4*x + 5
(y = a[0]).zero? or m = 6*(y**2) + 7*y + 8
ПомимоДело в том, что это не вызывает ошибку, есть ли разница?Есть ли побочные эффекты при этом?И есть ли лучший способ?