2017-04-09 2 views
-1

클래스 자체에 객체 인 @client라는 새 인스턴스 변수를 만듭니다. 이제 다른 파일에서이 클래스의 객체를 만들었지 만 @client 객체의 메서드에는 액세스 할 수 없습니다. 어떻게해야합니까?Ruby : 클래스가 실행중인 객체의 메서드를 전달합니다.

예 : 로컬 변수 @client 선언 한

class A_Helper 
    def initialize 
     @client = Module::Client.new('info') 
     p @client 
     # <Module::Client:0x000000017fd018> 
    end 
end 
--------------------------- 
class A_Controller 
    @A_Helper = A_Helper.new 
    p @A_Helper.client 
    # <class:A_Controller>: undefined method `client' for nil:NilClass 
+1

[mcve]가 좋을 것입니다. –

+0

이 도움이 될만한 예제를 추가했습니다. – Giygas

+0

_that_ 오류가 여전히 재생산되지 않습니다. 표시된 코드를 감안할 때'@ A_Helper'는 무효가 될 수 없습니다. –

답변

1

만 클래스 내부 그의 접근 할 수있다. 외부에서 액세스하려는 경우 attr_accessor/attr_reader과 같은 getter 또는 shortcuts를 선언해야합니다 (확인하려면 post).

class A_Helper 
    attr_reader :client 

    def initialize 
    @client = Module::Client.new('info') 
    end 
end 
+0

그것은 개체에 액세스 할 수 있지만 "정의되지 않은 메서드'client 'for nil : NilClass"라고 말하면서 A_helper.client.Method()를 수행 할 수 없습니다. 편집 : 죄송합니다. 클라이언트의 메소드 – Giygas

관련 문제