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