Ruby do/end 和 {} 优先权问题

qin287624952 · 2014年12月05日 · 最后由 qin287624952 回复于 2014年12月12日 · 2002 次阅读

为什么结果是这样子的?

求详解

result1 = one two { "three" }

result2 = one two do "three" end

是怎么运行赋值的

result1 = one(two {
"three"
})

result2 = one(two) do
"three"
end

例子真心举得拐弯抹角,生怕新手看得懂似的...

根据一楼就是一个是 one 的 block 一个是 two 的 block 呗...感谢一楼,楼主的例子真心没看懂

楼主的截图很明显啊,说的就是优先级问题,同样是 one two block, 因为{}和 do/end 的优先级不一样,看着都是 one two block , 但是其实是 1 楼写的那个样子,所以会有不同的结果,按理说书中后面应该要给出 1 楼写的那样的形式来给读者答疑解惑 如果没有的话,楼主还是换本书看吧

#4 楼 @blacktulip 所以说有一个最佳实践就是当调用的方法只有一个,且也只有一个参数的时候,才可以放心省略括号

6 楼 已删除

谢谢大家的回答

qin287624952 关闭了讨论。 02月10日 10:45
需要 登录 后方可回复, 如果你还没有账号请 注册新账号