Ruby ArgumentError参数数目错误(给定0,应为1)

Ruby ArgumentError参数数目错误(给定0,应为1),ruby,Ruby,我已经为codewars编写了一个程序,它可以找到最低的两个整数并返回它们的总和: def sum_two_smallest_numbers(numbers) array_lowest = [0, 0] main_iterate = 2 array_lowest[0] = sum_two_smallest_numbers[0] array_lowest[1] = sum_two_smallest_numbers[1] until main_iterate == sum_two

我已经为codewars编写了一个程序,它可以找到最低的两个整数并返回它们的总和:

def sum_two_smallest_numbers(numbers)
  array_lowest = [0, 0]
  main_iterate = 2
  array_lowest[0] = sum_two_smallest_numbers[0]
  array_lowest[1] = sum_two_smallest_numbers[1]
  until main_iterate == sum_two_smallest_numbers.length - 1 #maybe -2, or 0
    if sum_two_smallest_numbers[main_iterate] < array_lowest[0]
      array_lowest[0] = sum_two_smallest_numbers[main_iterate]
      main_iterate += 1
    elsif sum_two_smallest_numbers[main_iterate] < array_lowest[1]
      array_lowest[1] = sum_two_smallest_numbers[main_iterate]
      main_iterate += 1
    else
      main_iterate += 1
    end
  end
  return array_lowest[0] + array_lowest[1]
end
它抱怨我的第一行(这是与
结尾一起提供的),如果我将
数字
替换为任何实际数字,就像在测试用例中一样,它会抛出以下内容:

syntax error, unexpected tINTEGER, expecting ')'

我如何解决这个问题?

您正在递归调用没有参数的两个最小数之和,它需要一个参数。每次编写
求两个最小的数字之和时,这是一个方法调用。当您编写两个最小的数字[0]
时,这是一个没有参数的方法调用,
[0]
将访问返回值的第0个元素(如果调用成功)


似乎您可能想要
数字[0]
求两个最小的数字[0]
,您不能用实际数字替换
(数字)
,因为这是参数列表。唯一可以提供实际数字的地方是调用函数时(而不是定义函数时)。谢谢,我刚刚尝试调用函数。现在,它将单个数字或数组视为0个参数,但超过1则视为太多。我只能得到0或2+,你会喜欢Ruby的。你可以在这里写
[5,8,12,18,22].min(2).sum#=>13
。看,还有。这是一个非常优雅的解决方案,现在我要重新编程了!我已经喜欢了,就这样!非常感谢你的清楚解释。
syntax error, unexpected tINTEGER, expecting ')'