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])
您可以使用splat运算符*这样做会自动将数组中的每个值分配给相应的命名参数.
sum(*arr)
#=> The above will automagically do
#=> x = arr[0]
#=> y = arr[1]
#=> z = arr[2]
Run Code Online (Sandbox Code Playgroud)
ArgumentError 如果传递更多元素,将会引发.