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。