清潔方式有在Ruby創建一個閉合使得定義的方法具有訪問可變m
一個更容易和/或更具有可讀性方式?定義的方法,而不lambda表達式
我在這裏有一個輕微的「問題」lambda
。
很多時候,我動態定義具有訪問一個局部變量的方法:
例如:
class Comparison
def income
123
end
def sales
42342
end
# and a dozen of other methods
# Generate xxx_after_tax for each method
instance_methods(false).each do |m|
lambda {
define_method("#{m}_after_tax") do
send(m) * 0.9
end
}.call
end
end
你確定lambda是必需的嗎?沒有它,關閉應該可以正常工作。 – tokland
他不需要lambda)),這看起來很有趣,創建lambda並立即調用它。 Lambda只是一個匿名函數。 –
是的。 Lambda需要訪問方法定義中的'm'變量。 –