我正在做 ruby koans,我在 DiceSet 项目中。我已经创建了 DiceSet 类,但我的实例变量似乎并没有像我想象的那样与实例保持一致。我的代码是
class DiceSet
attr_reader :values
@values = []
puts @values.class
def roll(number_of_rolls)
(1..number_of_rolls).each do |roll|
puts @values.class
@values << (1..6).to_a.sample
end
return @values
end
end
公案然后使用我的 DiceSet 类
dice = DiceSet.new
dice.roll(5)
puts dice.values.class
assert dice.values.is?(Array)
我将 puts 命令放在那里以跟踪 @values 实例变量发生的事情,只有第一个 puts @values.class 说它是一个 Array 类。所有其他人都返回 NilClass。我是否错误地使用了实例变量,或者我还缺少什么?实例变量在方法调用后会被释放吗?
编辑:我的班级现在可以正常工作,因为我已将 @values = [] 放入 roll 方法中,如下所示。我现在唯一的问题是,为什么当我将 @values = [] 放在初始化方法中时,roll 方法认为 @values 是 NilClass 而不是数组