在scala中打破数组并作为参数传递

时间:2015-03-20 06:37:31

标签: function scala arguments

我是scala的新手,请原谅我,如果这很容易的话。

我有一个数组,包含我需要传递给的值 功能。但该函数接受多个参数。参数存在,但如何打破数组并将其传递给函数?

简而言之,我有数组[1,2,3],我想打电话给func(1,2,3)

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)