浏览 387 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-07-02
昨天看到一段代码,感觉挺有趣,贴出来分享给大家。
class BindingDemo
def initialize
@ivar = "wombat in instance variable"
end
def get_binding(param)
lvar = "cat in local variable"
binding
end
end
b = BindingDemo.new
the_binding = b.get_binding("dog in paramater") { "elk in block" }
puts(eval("@ivar", the_binding))
puts(eval("lvar", the_binding))
puts(eval("param", the_binding))
puts(eval("yield", the_binding))
eval("lvar = 'new value'", the_binding)
puts(eval("lvar", the_binding))
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-07-02
解释哈 趣味何在??
|
|
| 返回顶楼 | |
|
时间:2008-07-02
执行下不就知道了。
|
|
| 返回顶楼 | |
|
时间:2008-07-02
eval("lvar = 'new value'", the_binding)
puts(eval("lvar", the_binding)) 这个输出 "new value"怎么解释??我只能强行理解的 |
|
| 返回顶楼 | |
|
时间:2008-07-03
eval是在当前定上下文中去执行代码,由此可知,eval("lvar = 'new value'", the_binding) 是在the_binding上下文中给变量ivar重新赋值为'new value'.
那么puts(eval("lvar", the_binding)) 理所当然应该输出'new value' |
|
| 返回顶楼 | |


