考虑下面的Ruby代码:在Ruby中的单例类中调用单例方法?
module MyModule
class << self
def process_item(item)
item.capitalize
end
def foo=(item)
@foo_ref=process_item(item)
end
def foo
@foo_ref
end
self.foo = "initial foo"
end
end
我想设置的单类定义默认foo_ref
变量。如果我改变self.foo = "Initial foo"
到foo = "Initial foo"
然后我创建了单独的类中的局部变量,而不是调用setter方法
singleton class': undefined method `foo=' for #(NoMethodError)
:但是,Ruby解释引发了以下错误。
此外,我意识到我可能必须将process_item
方法放在单元类定义之外的模块定义中,以便它不会成为单例方法,而是辅助方法。
该代码的正确方法是什么(能够在单例类定义中调用单例方法,并且在单例类定义中使用辅助方法)?
在类定义中,'self'是类,所以就像错误消息所说的那样,您正在对单例类调用'foo ='方法,并且此方法不存在。 –