2

클래스 메소드에서 인스턴스 메소드를 호출하는 올바른 방법입니까? 여기서 instance_var는 Name 객체와 함께 전달됩니다. 클래스 메소드에 전달 된 instance_var 객체에서 func1을 호출하려고합니다. 어떻게 func2를 호출 할루비의 클래스 메소드에서 인스턴스 메소드 호출

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 클래스의 인스턴스입니다. –

+0

작동해야합니다. –

+0

이 방법을 시도했지만 값이 인쇄되지 않았습니다. – user1568617

답변

3

:

내가 쓴?

코드에 약간의 오류가 있습니다. 당신은 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)