我是scala的新手,请原谅我,如果这很容易的话。
我有一个数组,包含我需要传递给的值 功能。但该函数接受多个参数。参数存在,但如何打破数组并将其传递给函数?
简而言之,我有数组[1,2,3]
,我想打电话给func(1,2,3)
。
答案 0 :(得分:2)
使用apply
按索引获取元素:
val a = Array(1,2,3)
func(a(0), a(1), a(2))
或其他方式:
val Array(a,b,c,_) = Array(1,2,3,4,5)
func(a,b,c)
答案 1 :(得分:1)
找到它。对于def func(a: Int*)
,可以通过以下方式完成:
func(arr:_*)
答案 2 :(得分:1)
如果您的功能需要varargs (such as Int*
),则回复中的解决方案有效;但是,如果它实际上需要多个参数,那么它就不会。在这种情况下,您需要执行func(arr(0), arr(1), arr(2))
或使用反射:
// assumes func has exactly one apply method, modify to taste
val method = func.getClass.getMethods.filter(_.getName == "apply").head
method.invoke(func, arr)