可能重复:
Using do block vs brackets {}
What is the difference or value of these block coding styles in Ruby?
为什么:
test = [1, 1, 1].collect do |te|
te + 10
end
puts test
工作,但不是:
puts test = [1, 1, 1].collect do |te|
te + 10
end
然而这很有效:
puts test = [1, 1, 1].collect { |te|
te + 10
}
对于我不知道的块,do / end构造和{}构造之间是否存在差异?
答案 0 :(得分:10)
在“不工作”的情况下,该块实际上附加到puts
来电,而不是collect
来电。 {}
比do
绑定得更紧密。
下面的显式括号显示了Ruby解释上述语句的方式的不同之处:
puts(test = [1, 1, 1].collect) do |te|
te + 10
end
puts test = ([1, 1, 1].collect {|te|
te + 10
})