在使用attr_accessor时,我正在尝试创建一个包含Singleton模块的类。不过,这似乎不起作用。
require 'singleton'
class Foo
attr_accessor :bar
include Singleton
end
Foo.bar = 'foobar'这将产生以下错误:
undefined method `bar=' for Foo:Class (NoMethodError)我在这里做错了什么?
发布于 2013-07-09 21:28:17
Singleton不会改变attr_accessor的工作方式。它只能确保您只能有一个实例。因此,您必须在特征类中调用attr_accessor,就像在没有Singleton的情况下一样。
class Foo
singleton_class.class_eval{attr_accessor :bar}
end发布于 2013-07-09 21:26:19
试一下-
Foo.instance.bar = 'foobar'记录的和
发布于 2013-07-09 21:36:25
使用attr_accessors定义的方法是实例方法,您尝试在Foo类上调用方法bar=,而Foo类并没有定义它。您必须先获取Foo实例,然后在其上调用bar=:
Foo.instance.bar = "whatever"https://stackoverflow.com/questions/17549320
复制相似问题