2

这是从类方法调用Instance方法的正确方法吗?这里的instance_var是通过Name对象传递的。我想从传递给类方法的instance_var对象调用func1。在ruby中使用Class方法调用实例方法

我写了这个:

Class Name 
    def initialize 
     @name 
    end 
    def func1(value) 
     puts value 
    end 
    def self.func2(instance_var,val) 
     instance_var.func1(val) 
    end 
end 
+1

为什么你需要这个?但是,这是要走的路,其中instance_var是Name类的一个实例 – 2012-08-03 10:38:50

+0

它应该工作。 – 2012-08-03 10:47:25

+0

我试过了,但是没有打印。 – user1568617 2012-08-03 10:48:25

回答

3

你怎么称呼func2

您的代码有一个小错误。你写了Class而不是class。用Class你会得到一个语法错误。

此代码:

class Name 
    def func1(value) 
     puts value 
    end 
    def self.func2(instance_var,val) 
     instance_var.func1(val) 
    end 
end 

x = Name.new 
Name.func2(x, 12)  #12 

#or 
Name.func2(Name.new, 12) #12 

def initialize 
     @name 
    end 

将创建一个空的变量@name。它永远不会有价值。要指定您需要的值:

class Name 
    def initialize (var) 
     @name = var 
    end 
end 

x = Name.new(:x)