下面的代码返回一个错误:问题与Ruby类方法的定义
class ABC
def self.method1()
method2
end
def method2
end
end
ABC.method1
NameError: undefined local variable or method `method2' for ABC:Class
但是,下面的代码工作正常:
class ABC
def initialize
method2
end
def method2
end
end
ABC.new
是否初始化需要使用为了正确定义班级内的所有方法?第一个代码块有什么问题?
语言评论:'静态'是一个技术术语,它值得了解,但在Ruby本身中很少使用。在Ruby中,调用这种方法最明确的方法是'单例方法',或'对象的单例类的实例方法'。类的Singleton方法(它们本身就像任何其他对象一样)常常被昵称为“类方法”,以便将它们与类的实例方法区分开来。出于类似的原因,模块的单例方法被昵称为“模块方法”。 – 2013-04-28 13:46:54