如果不以=
结尾,我可以获得一个设置单例类中的实例变量的方法:
class Aaa
class << self
def config(&block)
instance_eval(&block)
end
def set_blah(blah)
@blah = blah
end
def blah
@blah
end
end
end
Aaa.config {set_blah("something")}
Aaa.blah # => "something" as expected
当设置实例变量的方法以=
结尾时,它不再起作用了:
class Bbb
class << self
def config(&block)
instance_eval(&block)
end
def blah=(blah)
@blah = blah
end
def blah
@blah
end
end
end
Bbb.config {blah=("something")}
Bbb.blah # => nil, not sure why
# This works
Bbb.blah=("hi")
Bbb.blah # => "hi"
为什么set_blah
和blah=
方法的工作方式不同?
答案 0 :(得分:3)
只需调用blah=
即可创建一个名为blah
的局部变量,并为其赋值("something")
,即"something"
。您必须添加明确的接收器,例如:
self.blah=("something")