| 赞 | 62 |
| VIP | |
| 好人卡 | |
| 积分 | 65 |
| 经验 | |
| 最后登录 | 2025-2-24 |
| 在线时间 | 1275 小时 |
百合控
- 梦石
- 0
- 星屑
- 6548
- 在线时间
- 1275 小时
- 注册时间
- 2013-8-21
- 回帖
- 3522

|
发表于 2014-8-11 22:22:13
|
显示全部楼层
本帖最后由 余烬之中 于 2014-8-11 22:39 编辑
- module M
- lvar = 5
- $a_mysterious_proc = Proc.new { print self, lvar, "\n" }
- lvar = 4
- end
- "m".instance_eval(&$a_mysterious_proc) #=> m4
复制代码- module M
- lvar = 5
- $a_mysterious_proc = Proc.new { print self, lvar, "\n" }
- end
- module M
- lvar = 4
- end
- "m".instance_eval(&$a_mysterious_proc) #=> m5
复制代码 似乎proc会一直保存着对变量的追踪 但是一旦死亡后即便有重名也不再管了 在局部变量的时候索引仅由proc保存 (好像表述的不是很清楚 不过无所谓了 我不知道我在说什么ORZ)
======================
像这样?
[pre lang="ruby" line="1"]module M
lvar = 5
$a_mysterious_proc = Proc.new { print self, lvar, "\n" }
end
module M
lvar = 4
end
"m".instance_eval(&$a_mysterious_proc.tap{|s| s.binding.eval("lvar = 1")}) #=> m1[/pre] |
|