Ruby 1.9的给予定义都只是局部的一个块,不收,较同名变量的外部范围的变量的能力:如何使块本地变量默认在红宝石1.9?
x = 10
proc { |;x|
x = 20
}.call
x #=> 10
我想有这种行为的默认一些我定义的块 - 无需使用|; x,y,z |语法(注意分号)。
我不认为Ruby本身允许这个,但是有可能破解这个功能吗?
我目前有一个解决方案,但它非常难看,因为它需要检查哪些本地人在块的末尾发生了变化,然后在块之前将它们还原为它们的值。如果您的解决方案需要指定哪些变量是块地方在块的开始即scope(:x) { x = 20 }
请问为什么你喜欢你的语法Ruby 1.9的?你不喜欢的方法是什么? – 2010-01-04 23:00:55
@Myrddin,它在DSL上下文中使用,所以分号和块变量语法看起来不合适。 – horseyguy 2010-01-05 02:18:46