gpt4 book ai didi

ruby - 可以使用数组作为方法吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:05 26 4
gpt4 key购买 nike

我有这门课:

class Game
attr_accessor :player_fleet, :opponent_fleet
@player_fleet = []
@opponent_fleet = []
...
end

然后像这样创建一个实例:

my_game = Game.new

然后像这样使用它:

my_game.opponent_fleet << opponent

这给了我这个错误:

undefined method `<<' for nil:NilClass (NoMethodError)

为什么我不能这样处理数组?我是否必须创建一种方法来将对象插入数组?

最佳答案

您在类级别初始化@opponent_fleet,因此它是类的实例变量,而不是生成对象的实例变量。请记住,在 Ruby 中,甚至类也是对象 :)

irb(main):001:0> class Game
irb(main):002:1> @foo = 3
irb(main):003:1> end
irb(main):004:0> Game.instance_eval { @foo }
=> 3
irb(main):005:0> Game.new.instance_eval { @foo }
=> nil

您想在构造函数中初始化它:

class Game
attr_accessor :player_fleet, :opponent_fleet

def initialize
@player_fleet = []
@opponent_fleet = []
end
end

关于ruby - 可以使用数组作为方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com