Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 价值或;“违约”;_Ruby - Fatal编程技术网

Ruby 价值或;“违约”;

Ruby 价值或;“违约”;,ruby,Ruby,可能重复: 我用Lua x = value or "default_if_value_is_nil" (作为的快捷方式,如果value~=nil,则x=value end) 我可以用Ruby做类似的事情吗 x = value || "default_if_value_is_nil_or_false" 注意这里的“or false”,虽然Lua中可能也有相同的情况。您实际上可以在ruby中做同样的事情 x = nil_value || "default" 请注意,这也适用于任何其他“虚假”

可能重复:

我用Lua

x = value or "default_if_value_is_nil"
(作为
的快捷方式,如果value~=nil,则x=value end

我可以用Ruby做类似的事情吗

x = value || "default_if_value_is_nil_or_false"

注意这里的“or false”,虽然Lua中可能也有相同的情况。

您实际上可以在ruby中做同样的事情

x = nil_value || "default"
请注意,这也适用于任何其他“虚假”值

x = false_value || "default"
是一个完全合法的Ruby语句,但请注意,
在运算符优先级中具有最低优先级之一。还要知道,在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"

put'>>>assignment=的优先级高于,或者将括号括起来,或者表达式的优先级高于=| |的优先级高于=哇,这很简单。那么| |和或在Ruby中有什么区别呢?优先级
的优先级非常低,因此
a=b或c
被解释为
(a=b)或c
@Bożena优先级不同,请参见和。非常感谢!但这种优先级是不寻常的,在大多数语言中,赋值的优先级最低。就像Ruby中的许多东西一样,它是从Perl借用的:
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"