我想将一个数组作为参数传递给该方法尽可能多的值。例如,如果我将[1,2,3]
输入add([1,2,3]
,我应该会收到数组的总和值。
def add(a, b)
a + b
end
def subtract(a, b)
a - b
end
由于我是Ruby的新手,我不知道如何解决这个问题。有人可以解释一下。
答案 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