我是这个
ALIAS = %w{a b c}
ALIAS.each do |shortcode|
define_method("#{shortcode}=") do |value|
puts "CALLING THE ASSIGNMENT METHOD"
eval "$#{shortcode} = value"
end
end
我在Pry控制台上执行了该操作,然后执行:
a = 123
我以包含a
的{{1}}变量结束,但我的方法不会被调用。
如果我改为
123
我的方法被调用。
有没有办法让它在没有自我的情况下发挥作用?
答案 0 :(得分:2)
请注意,如果您有表达式
x.y=z
方法" y ="在对象x上调用,参数为z。
但是,如果你有一个表达式
y=z
y被解释为变量的名称,并被赋值为z。
由于您希望调用a =方法,因此您需要一个接收器。虽然我们经常可以省略接收器,但如果它是“自我”,Ruby在这里无法识别您想要进行方法调用。因此,您必须明确使用' self'。
答案 1 :(得分:0)
有没有办法让它适用于自己?
你的意思是没有自己吗?
没有。你必须使用自己。