我的印象是,加入的条件与& &是顺序执行,使得下面将返回true:红宝石条件序列
a = "adasd"
> b = a && b.present?
=> false
的思考?
谢谢! --Peter
注:
B = A => “adasd”
b.present? =>真
我的印象是,加入的条件与& &是顺序执行,使得下面将返回true:红宝石条件序列
a = "adasd"
> b = a && b.present?
=> false
的思考?
谢谢! --Peter
注:
B = A => “adasd”
b.present? =>真
当你这样说:
b = a && b.present?
你声明b
作为一个局部变量,但它会nil
,直到分配的右侧进行评估。特别是,b
将nil
当你打电话present?
上,并且会话将是虚假的b
错误。
当你这样做:当你调用present?
它让您从b.present?
返回true
a = 'pancakes'
b = a
b.present?
b
将具有值'pancakes'
。
作为每rails doc
本正在检查一个变量为非空白
按照分配定时,红宝石只要它认为它声明中的范围的变量,所以B将处于范围但没有价值,所以现在将返回false。
你也许应该用defined?
a = "abc"
=> "abc"
defined? a
=> "local-variable"
defined? b
=> nil
b = defined? b
=> "local-variable"
啊此相比。当然。那么正确:(b = a)&& b.present? –