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)