很抱歉,这个问题是重复的.但我无法找到使用上的差异.当我运行以下代码时,我得到了不同的答案.我从大多数教程中看到,使用"do ... end"与"{...}"块相同.
include Comparable
a = [1, 4, 2, 3, 5]
p a.sort do |x,y|
y <=> x
end
Run Code Online (Sandbox Code Playgroud)
输出显示为= [1,2,3,4,5]
但是当我这样跑的时候......
include Comparable
a = [1, 4, 2, 3, 5]
p a.sort { |x,y|
y <=> x
}
Run Code Online (Sandbox Code Playgroud)
输出显示为= [5,4,3,2,1]
这里有什么问题.是否存在两种语法有任何不同行为的情况?
优先权不同.第一个被解释为
p (a.sort) do
...
end
Run Code Online (Sandbox Code Playgroud)
由于未传递块sort,因此将按默认的升序排序.然后,块传递给p,不使用它.