Ярлык
Как уже упоминалось в ответе Марека , a &&= b
- это сокращение для a = a && b
, например:
a ||= b
является a = a || b
a += 1
является a = a + 1
Значение
a = a && b
в основном означает: установите a
на b
, только если a
было определено и верно.
Альтернативы
&&
иногда может использоваться вместо if
. Так как в любом случае есть if
, вы также можете написать:
resource = controller_name.singularize.to_sym
method = "#{resource}_params"
if respond_to?(method, true)
if params[resource]
params[resource] = send(method)
end
end
или короче:
resource = controller_name.singularize.to_sym
method = "#{resource}_params"
if respond_to?(method, true) && params[resource]
params[resource] = send(method)
end
или
resource = controller_name.singularize.to_sym
method = "#{resource}_params"
params[resource] = send(method) if respond_to?(method, true) && params[resource]
Попался
Существует небольшая разница, хотя a
не определено:
a &&= b
установит a
в nil
но
if a
a = b
end
потерпит неудачу с NameError
.