Dmy*_*iak 0 ruby closures metaprogramming ruby-on-rails
是否有更简单和/或更易读的方法在Ruby中创建闭包,以便定义的方法可以访问变量 m?
我在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
Run Code Online (Sandbox Code Playgroud)
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|
define_method("#{m}_after_tax") do
send(m) * 0.9
end
end
end
Run Code Online (Sandbox Code Playgroud)