如何在生成的数组中修复错误数量的括号?

时间:2011-12-15 20:31:40

标签: ruby

当我致电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

4 个答案:

答案 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?