也包括 binding.pry_remote,经常写反,设计的初衷是什么?
pry 需要当前 binding 返回的上下文对象,调用 binding 方法是免不了的。只对 Binding 类添加方法显然比添加全局方法的污染小,所以 binding.pry 胜过 pry binding
binding
Binding
binding.pry
pry binding
而 pry.binding 纯蛋疼,一是获取不了 binding (pry: 我要你的 binding, 你给我我的 binding 难不成是要 de 我的 bug...), 二是你既然都定义了全局方法 pry 了还多加一步调用有啥用...
pry.binding
pry
因为 patch binding 对象会很方便:
› irb 2.0.0p247 :001 > x = 1 => 1 2.0.0p247 :002 > eval("x", binding) => 1
这个就满足大部分 pry 的需求了... 主要也是获取 binding 内的各种值。连 eval 都赠送了..
#3 楼 @Saito 还有就是 eval("x", binding) 不如 binding.eval("x") OO, pry 同理
eval("x", binding)
binding.eval("x")
从实现上看,message receiver (点号左边或者 self) 不需要做类型检查,message param (方法右边) 却要做类型检查 -- 运行变慢,代码更多,更容易出类型不匹配的错误
#2 楼 @luikore #3 楼 @Saito 感谢解惑 #1 楼 @Juanito 明显不顺啊,你先让绑定,所有人都在那等着到底叫谁,不如先叫 Pry,只有它一个人在等待比较好。
#5 楼 @046569 是的,不好意思,請看 2-4 樓的專業回復。
#4 楼 @luikore 这是一个 this 是谁的问题..
this
最近 coffee 写多了...
initailize() initailize this, arguments
所以就 eval 了。
eval
这是病,得电...
涨知识了,感谢 2 楼分享