我提取了简单的例子:
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)} })
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第一个pp产生:
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
所有的演讲者都在给予:
[{:value=>1, :double=>2}, {:value=>2, :double=>4}, {:value=>3, :double=>6}]
Run Code Online (Sandbox Code Playgroud)
我认为它与运算符优先级有关.我在哪里可以找到好的解释?
Gar*_*eth 14
这是因为你在打电话
pp x.map
Run Code Online (Sandbox Code Playgroud)
并将一个块传递给pp(忽略它)
正如编程Ruby书中所解释的那样
大括号具有很高的优先级; 确实有一个低优先级
因此,有效地,大括号绑定到最接近它们的函数调用(x.map),而绑定到最远的(pp).这有点简单,但它应该解释这种情况
| 归档时间: |
|
| 查看次数: |
1828 次 |
| 最近记录: |