loo*_*non 4 ruby syntax ruby-on-rails
我遇到了一个错误,我遗漏了这样的空间
@entries = [#<Entry id: 3806, approved: false, submitted: false]
@entries.any?&:submitted? => true
@entries.any? &:submitted? => false
Run Code Online (Sandbox Code Playgroud)
空间如何改变行为.Entry.submitted?对于数组中的所有元素,=> false,第二行具有所需的行为.
Pan*_*kos 18
问题是&也是具有优先权的一元运算符.
当你这样做:
@entries.any?&:submitted?
Run Code Online (Sandbox Code Playgroud)
你实际上是这样做的:
(@entries.any?)&(:submitted?)
Run Code Online (Sandbox Code Playgroud)
结果如此.由于@entries中的条目和符号:已提交?的真值是真的.
当你这样做:
@entries.any? &:submitted?
Run Code Online (Sandbox Code Playgroud)
你实际在做的是:
@entries.any?(&:submitted?)
Run Code Online (Sandbox Code Playgroud)
这是你真正想要的.
@pilcrow开始工作的原因是他/她正在使用以下课程:
class Entry
def submitted?
true
end
end
Run Code Online (Sandbox Code Playgroud)
要重现结果,请使用以下类:
class Entry
def submitted?
false
end
end
Run Code Online (Sandbox Code Playgroud)
PS:与@ fl00r的例子相同:
[1,2,nil].any?&:nil? and [1,2,nil].any? &:nil?
Run Code Online (Sandbox Code Playgroud)
并[1,2,零] .ANY?结果是真的和:零?具有真值,因此结果是相同的,因为[1,2,nil]也包含零值,但计算是不同的.
归档时间: |
|
查看次数: |
1173 次 |
最近记录: |