当前位置:  开发笔记 > 后端 > 正文

Ruby块和不带括号的参数

如何解决《Ruby块和不带括号的参数》经验,为你挑选了1个好方法。

我提取了简单的例子:

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)} })

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

[1, 2, 3]

所有的演讲者都在给予:

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

我认为它与运算符优先级有关.我在哪里可以找到好的解释?



1> Gareth..:

这是因为你在打电话

pp x.map

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

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

大括号具有很高的优先级; 确实有一个低优先级

因此,有效地,大括号绑定到最接近它们的函数调用(x.map),而绑定到最远的(pp).这有点简单,但它应该解释这种情况

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有