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

Ruby 在不同对象方法中使用不同对象的属性,ruby,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

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

假设我们有

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

我怎样才能做到这一点呢?

您的玩家应该有一个对正在玩的游戏的参考。比如说

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

除了toch的答案之外,您还可以在设置玩家访问器时保留对游戏对象的引用。不使用自动访问器,您可以使用在访问器中设置自定义代码,这将在右值上设置引用。

我不明白这一行:player.my_game=self@KubaPolaczek
self
指当前对象,本例中的游戏实例。@KubaPolaczek我在
Player
中添加了一个属性
my\u game
。检查它的类定义。
player
是对作为参数传递的
player
对象的引用。不,不是真的,但是不要麻烦,我是ruby世界的noob,我会尽我最大的努力解决这个问题,我仍然需要我的代码来工作;]