如何将数组作为方法中的参数传递?

时间:2014-07-08 23:02:08

标签: ruby arrays methods param

我想将一个数组作为参数传递给该方法尽可能多的值。例如,如果我将[1,2,3]输入add([1,2,3],我应该会收到数组的总和值。

def add(a, b)
    a + b
end

def subtract(a, b)
a - b
end

由于我是Ruby的新手,我不知道如何解决这个问题。有人可以解释一下。

3 个答案:

答案 0 :(得分:12)

通常的做法是传递可变数量的参数,我从你的问题中假设Numeric

def add_em_up(*args)
  args.reduce(:+)
end

add_em_up(1,2,3,4)    #=> 10
add_em_up(1,2,3.5,4)  #=> 10.5

答案 1 :(得分:2)

我认为安德鲁的帖子很好但你更有可能看到这样的is_a方法:

def add(val)
  if val.is_a?(Array)
    do something
  else
    @result += val
  end
end

答案 2 :(得分:1)

看着你的earlier question,我猜你想要能够区分数组参数和数字参数。尝试使用kind_of?方法并根据结果进行分支。有关其他建议,请参阅this问题(使用responds_to?方法更为惯用)。

def add(val)
  if (val.kind_of?(Array))
    # add each element
  else
    @result += val
  end
end

要执行此添加,您将要使用each方法为阵列的每个元素执行操作。

val.each do |x|
  @result += x
end