2013-04-02 6 views
1

기본적으로 메서드에서 한 파일의 변수를 사용하는 것이 필요합니다. 나를다른 개체의 다른 개체의 특성을 사용하는 메서드

을 설명 할 것은, 수는 그냥 번호와 객체 날에 의해 정의 된 다른 클래스의 객체이다 곳에 우리가

class Game 
attr_accessor :number, :object 

end 

을 말할 수 그것은 플레이어의 클래스 이름을 수 있습니다. 이제 우리는 Game 클래스를 필요로하는 다른 파일을 만들고 다음과 같이 만듭니다 :

require './Game.rb' 
require './Player.rb' 

myGame = Game.new 
myGame.number = 1 
myGame.object = Player.new 

그리고 지금은 큰 순간입니다. Player 클래스에 정의 된 메서드에서 myGame.number 특성을 사용하고 싶습니다. 예 : this

class Player 
attr_accessor :some_var 

    def method 
     @some_var = myGame.number 
    end 
end 

나는 이것을 어떻게 할 수 있습니까?

답변

0

플레이어에서 게임이 실행되고 있음을 나타내야합니다. 당신은 플레이어의 접근을 설정할 때 Toch는의 대답에 예를

또는
class Game 
    attr_accessor :number 
    attr_reader :my_player 

    def my_player=(player) 
     player.my_game = self 
     @my_player = player 
    end 
end 

class Player 
    attr_accessor :some_var, :my_game 

    def method 
    @some_var = @my_game.number if @my_game 
    end 
end 

myGame = Game.new 
myGame.number = 1 
myGame.my_player = Player.new() 

myGame.my_player.method 

puts myGame.my_player.some_var 
+0

나는이 줄을 얻지 못한다 : player.my_game = self – Leo

+1

@KubaPolaczek'self'는 현재의 객체 인이 경우 게임 인스턴스를 참조한다. – Stefan

+0

@KubaPolaczek Stefan이 옳습니다. – toch

0

를 들어, 당신은 게임 개체에 대한 참조를 유지할 수 있습니다. 자동 접근자를 사용하는 대신 get_ set_ accessor syntax을 사용하여 접근 자에서 사용자 정의 코드를 가질 수 있습니다.이 코드는 rvalue에 대한 참조를 설정합니다.

관련 문제