重複の可能性:
nilの場合に代替値を割り当てる
Luaでは
x = value or "default_if_value_is_nil"
(のショートカットとしてif value ~= nil then x = value end
)
Rubyで同様のことを行うことはできますか?
重複の可能性:
nilの場合に代替値を割り当てる
Luaでは
x = value or "default_if_value_is_nil"
(のショートカットとしてif value ~= nil then x = value end
)
Rubyで同様のことを行うことはできますか?
x = value || "default_if_value_is_nil_or_false"
ここで「またはfalse」に注意してください。ただし、Luaでも同じことが当てはまる可能性があります。
x = value or "default_if_value_is_nil"
or
は完全に合法的なRubyステートメントですが、演算子の優先順位で最も低い優先順位の1つであることに注意してください。また、Rubyブール演算では、falseとnilを除いてすべてがtrueであるため、値がnilではなくfalseであっても、このRubyステートメントはデフォルトに応答します。
puts '>>> assignment = has a higher priority than or <<<'
value = 'y'
x = value or "default_if_value_is_nil"
print 'value=', value.inspect, ', x=', x.inspect, "\n"
value = false
x = value or "default_if_value_is_nil"
print 'value=', value.inspect, ', x=', x.inspect, "\n"
value = nil
x = value or "default_if_value_is_nil"
print 'value=', value.inspect, ', x=', x.inspect, "\n"
puts '>>> put parenthesis around or expression to have a higher priority than = <<<'
value = 'y'
x = (value or "default_if_value_is_nil")
print 'value=', value.inspect, ', x=', x.inspect, "\n"
value = false
x = (value or "default_if_value_is_nil")
print 'value=', value.inspect, ', x=', x.inspect, "\n"
value = nil
x = (value or "default_if_value_is_nil")
print 'value=', value.inspect, ', x=', x.inspect, "\n"
puts '>>> || has a higher priority than = <<<'
value = 'y'
x = value || "default_if_value_is_nil"
print 'value=', value.inspect, ', x=', x.inspect, "\n"
value = false
x = value || "default_if_value_is_nil"
print 'value=', value.inspect, ', x=', x.inspect, "\n"
value = nil
x = value || "default_if_value_is_nil"
print 'value=', value.inspect, ', x=', x.inspect, "\n"
出力:
>>> assignment = has a higher priority than or <<<
value="y", x="y"
value=false, x=false
value=nil, x=nil
>>> put parenthesis around or expression to have a higher priority than = <<<
value="y", x="y"
value=false, x="default_if_value_is_nil"
value=nil, x="default_if_value_is_nil"
>>> || has a higher priority than = <<<
value="y", x="y"
value=false, x="default_if_value_is_nil"
value=nil, x="default_if_value_is_nil"
実はRubyでも同じことができます
x = nil_value || "default"
これは、他の「falsey」値でも機能することに注意してください
x = false_value || "default"