2016-10-23 41 views
1

从实例方法调用类方法的语法是什么? 假设我有以下来自实例方法的Ruby调用类方法

class Class1 
    def initialize 
     #instance method 
     self.class.edit 
     puts "hello" 
    end 

    def self.edit 
     #class method 
     "ha" 
    end 
end 

c= Class1 

当我运行这段代码,我没有得到任何输出。

+0

尝试'Class1.new'。 'initialize'是一个实例方法,因此它必须在'Class1'的一个实例上调用。 'Class1.new'创建实例,在其上调用'initialize',然后返回实例。 –

回答

3

你没有得到任何输出,因为你没有对这个调用的结果做任何事情,再加上你实际上没有创建一个带有new的实例,你只需要让c成为该类的别名。如果你改变了一点,你得到这个:

class Class1 
    def initialize 
     #instance method 
     puts self.class.edit 
    end 

    def self.edit 
     #class method 
     "ha" 
    end 
end 

c= Class1.new