Ruby块和非私有的参数

我提取了简单的例子:

require 'pp' x = 1..3 pp x.map do |i| {:value => i, :double => (i*2)} end pp x.map { |i| {:value => i, :double => (i*2)} } pp(x.map do |i| {:value => i, :double => (i*2)} end) pp(x.map { |i| {:value => i, :double => (i*2)} }) 

我想知道为什么第一页产生:

 [1, 2, 3] 

当所有的oders都给:

 [{:value=>1, :double=>2}, {:value=>2, :double=>4}, {:value=>3, :double=>6}] 

我认为这与运营商的优先权有关。 我在哪里可以find很好的解释?

这是因为你在打电话

 pp x.map 

并传递一个块到pp(忽略它)

正如Ruby编程的书中所解释的那样

大括号具有高优先级; 具有低优先级

所以,实际上,大括号与最接近它们的函数调用(x.map)绑定,而绑定到最远(pp)。 这有点简单,但应该解释这种情况