Ruby 我们能做‘a=b | ;红宝石的?
我想知道我们是否可以表示“如果第一个为空,那么选择第二个。”Ruby 我们能做‘a=b | ;红宝石的?,ruby,Ruby,我想知道我们是否可以表示“如果第一个为空,那么选择第二个。” 嗯,是的a | |=b相当于a=a | | b如果第一个元素是nil或false,那么结果就是第二个元素。是的a | |=b相当于a=a | | b如果第一个元素是nil或false,那么结果就是第二个元素。当然。它按预期工作: bar = nil doe = "Hello" foo = bar || doe # => "Hello" 当然。它按预期工作: bar = nil doe = "Hello" foo = bar |
嗯,是的
a | |=b
相当于a=a | | b
如果第一个元素是nil
或false
,那么结果就是第二个元素。是的a | |=b
相当于a=a | | b
如果第一个元素是nil
或false
,那么结果就是第二个元素。当然。它按预期工作:
bar = nil
doe = "Hello"
foo = bar || doe
# => "Hello"
当然。它按预期工作:
bar = nil
doe = "Hello"
foo = bar || doe
# => "Hello"
当你试着运行那段代码时发生了什么?我猜你会得到一个布尔值。是的,你应该能做到!这是一个Ruby问题,而不是RailsNote:是的,按原样工作,但要确保bar中没有布尔值,否则可能会得到意想不到的结果。如果有疑问,请使用更安全但更难看的
foo=bar.nil?doe:bar
当你试着运行那段代码时发生了什么?我猜你会得到一个布尔值。是的,你应该能做到!这是一个Ruby问题,而不是RailsNote:是的,按原样工作,但要确保bar中没有布尔值,否则可能会得到意想不到的结果。如果有疑问,请使用更安全但更难看的foo=bar.nil?doe:bar
这是不对的a=a | | b
不等于foo=bar | | doe
,但它等于foo=foo | | doe
。你仔细阅读了答案吗?你可以再试一次。我说过a | |=b
相当于a=a | | b
。QS已经知道了| |=
,所以等价性应该能回答他的问题。我可能弄错了,但是你怎么能像a | | | doe
那样写foo=bar | | doe
?不,你不能,但是| |运算符的基本原理保持不变,无论是在a | |=b
中还是在a=b | | c
中,这都是不对的a=a | | b
不等于foo=bar | | doe
,但它等于foo=foo | | doe
。你仔细阅读了答案吗?你可以再试一次。我说过a | |=b
相当于a=a | | b
。QS已经知道了| |=
,所以等价性应该能回答他的问题。我可能弄错了,但是你怎么能像a | | | doe
那样写foo=bar | | doe
?不,你不能,但是| |运算符的基本原理保持不变,无论是在a | |=b
中还是在a=b | | c
中;)我无法在真实的上下文中测试它,所以我对自己的语法有疑问:)什么样的值让ruby选择第二种?零、假和“空”?false
或nil
。不是”
或0.good to ear;)我无法在真实的上下文中测试它,所以我对自己的语法有疑问:)什么样的值让ruby选择第二种?零、假和“空”?false
或nil
。不是”
或0。