Ruby 求教 ruby 中块的疑问

daigong · 2012年10月08日 · 最后由 daigong 回复于 2012年10月10日 · 2537 次阅读

好好学习,天天向上。。认真学习 ruby 的 api 发现有一些无法理解的东东,望大家帮忙 -3 -

以下俩个代码什么区别,为啥执行出来的结果不一样呢 - -# 环境是 1.9.3-p194

demo 1

a = [1,2,2,3,4,5,5]

p a.delete(12) {
    "not found"
}

输出:

not found

demo 2

a = [1,2,2,3,4,5,5]

p a.delete(12) do
    "not found"
end

输出

nil
  • - 块 {} 和 do end 有什么区别。。。为什么输出不一样呢?m-_-m 求解答

p(a.delete(12) do "not found" end)

ruby 解释器问题,把 do end 认为是 p 方法的 block 了

🚀 果然如此!为什么 大括号的写法 没有被 p 识别。。 - - 难道有优先级的问题?

#1 楼 @jjym 果然如此!为什么 大括号的写法 没有被 p 识别。。 - - 难道有优先级的问题?

ruby 中{} 的优先级要高于 do...end

#4 楼 @zzhattzzh 多谢~~咱继续学 呵呵 :P

需要 登录 后方可回复, 如果你还没有账号请 注册新账号