Ruby array eval作为方法的参数

Cla*_*imp 0 ruby ruby-on-rails

我们有方法:

def sum(x, y, z)
 x + y + z
end
Run Code Online (Sandbox Code Playgroud)

和数组

arr = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

如何将数组传递给sum方法?其实我需要这样的东西:

pseudo
sum(arr.each {|i| i})
Run Code Online (Sandbox Code Playgroud)

不改变方法,如果sum接受splat它就能工作,所以请不要提供总和(arr [0],arr [1],arr [2])

Ami*_*oki 6

您可以使用splat运算符*这样做会自动将数组中的每个值分配给相应的命名参数.

sum(*arr)
#=> The above will automagically do
#=> x = arr[0]
#=> y = arr[1]
#=> z = arr[2]
Run Code Online (Sandbox Code Playgroud)

ArgumentError 如果传递更多元素,将会引发.