在不同的对象方法中使用不同对象的属性

时间:2013-04-02 12:33:40

标签: ruby

我需要的是基本上在方法中使用来自一个文件的变量。让我解释一下

我们说

class Game
attr_accessor :number, :object

end

其中number只是一些数字而object是我定义的其他类的对象,让我们将它命名为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

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

除了toch的答案,您可以在设置播放器访问者时保留对游戏对象的引用。您可以使用get_ set_ accessor syntax在访问者中设置自定义代码,而不是使用自动访问器,这将在右值上设置引用。