2013-04-02 56 views
1

我需要的基本上是從方法中的一個文件中使用變量。讓我來解釋一下在不同對象中使用不同對象的屬性方法

,假設我們已經

class Game 
attr_accessor :number, :object 

end 

其中number只是一些數字和對象是由我定義的一些其他類的對象,讓我們將其命名爲Player類。現在我們製作另一個文件,這個文件需要類遊戲,並且是這樣的:

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

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

現在是大的時刻。在Player類中定義的方法中,我想使用myGame.number屬性。像這樣

class Player 
attr_accessor :some_var 

    def method 
     @some_var = myGame.number 
    end 
end 

我該如何做到這一點?

回答

0

您的玩家應該參考正在玩的遊戲。例如

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

除了toch的回答,您可以在設置玩家訪問器時保留對遊戲對象的引用。您可以使用get_ set_ accessor syntax在訪問器中設置自定義代碼,而不是使用自動訪問器,這會在右值上設置引用。

相關問題