3

重複の可能性:
nilの場合に代替値を割り当てる

Luaでは

x = value or "default_if_value_is_nil"

(のショートカットとしてif value ~= nil then x = value end

Rubyで同様のことを行うことはできますか?

4

3 に答える 3

5
x = value || "default_if_value_is_nil_or_false"

ここで「またはfalse」に注意してください。ただし、Luaでも同じことが当てはまる可能性があります。

于 2012-12-30T21:49:56.200 に答える
2
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"
于 2012-12-30T23:56:31.873 に答える
2

実はRubyでも同じことができます

x = nil_value || "default"

これは、他の「falsey」値でも機能することに注意してください

x = false_value || "default"
于 2012-12-30T21:51:45.403 に答える