当我致电next()
时,我[]
中有一个无关的@current
。我该如何解决这个问题?
class Result
attr_accessor :current
def initialize(*previous)
@current = previous
p @current
end
def next()
res = Result.new(@current)
end
end
res = Result.new([2,2], [3,3], [4,4])
nextArray = res.next
答案 0 :(得分:1)
您需要在Result.new(*@current)
之前使用星号previous
进行操作,以便将数组“splat”回到参数列表中,这样您就可以调用Result.new
三个参数而不是一个包含三个数组的数组。
答案 1 :(得分:1)
原因*previous
是一个数组。因此,如果你打电话给Result.new @current
,它会被包裹在下一个数组中,依此类推。
答案 2 :(得分:1)
您的第一个电话有3个参数,而next()中的电话只有一个。
尝试:
def next()
res = Result.new(*@current)
end
答案 3 :(得分:1)
尝试将@current
中的数组扩展为构造函数的单独参数(而不是单个数组参数):
def next
res = Result.new(*@current)
end
另请参阅此问题,解释星号运算符:What does the (unary) * operator do in this Ruby code?