Function 在scala中中断数组并作为参数传递

Function 在scala中中断数组并作为参数传递,function,scala,arguments,Function,Scala,Arguments,我是scala的新手,所以请原谅我,如果这很容易做到的话 我有一个数组,由需要传递给 功能。但是函数接受多个参数。参数存在,但如何断开数组并将其传递给函数 简而言之,我有数组[1,2,3],我想调用func(1,2,3)找到它。对于def func(a:Int*)可以通过以下方式完成: func(arr:_*) 找到了。对于def func(a:Int*)可以通过以下方式完成: func(arr:_*) 使用apply按索引获取元素: val a = Array(1,2,3) func(a(

我是scala的新手,所以请原谅我,如果这很容易做到的话

我有一个数组,由需要传递给 功能。但是函数接受多个参数。参数存在,但如何断开数组并将其传递给函数


简而言之,我有数组
[1,2,3]
,我想调用
func(1,2,3)
找到它。对于
def func(a:Int*)
可以通过以下方式完成:

func(arr:_*)

找到了。对于
def func(a:Int*)
可以通过以下方式完成:

func(arr:_*)

使用
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)

使用
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)
如果你的功能需要,那么你回复中的解决方案是有效的;但是,如果它实际上需要多个参数,则不会。在这种情况下,您需要执行
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)
如果你的功能需要,那么你回复中的解决方案是有效的;但是,如果它实际上需要多个参数,则不会。在这种情况下,您需要执行
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)

如果有人有更好的方法,请添加它。有没有理由投反对票?因为它应该是
func(arr:*)
。当然,如果
func
定义为
def func(xs:Int*)=???
。如果
func
被定义为
def func(a:Int,b:Int,c:Int)=?
,则不适用。如果有人有更好的方法,请添加它。有没有理由投反对票?因为它应该是
func(arr:*)
。当然,如果
func
定义为
def func(xs:Int*)=???
。如果
func
被定义为
def func(a:Int,b:Int,c:Int)=???
,则不适用。