Scala 如何从vararg参数调用函数?

Scala 如何从vararg参数调用函数?,scala,Scala,是否可以调用vararg参数中包含的函数 def perform(functions:() => Unit*) = ? 是的,很有可能: >> def perform(functions:() => Unit*) = for (f <- functions) f() >> perform(() => println("hi"), () => println("bye")) hi bye perform: (functions: ()

是否可以调用vararg参数中包含的函数

def perform(functions:() => Unit*) = ?
是的,很有可能:

>> def perform(functions:() => Unit*) = for (f <- functions) f()
>> perform(() => println("hi"), () => println("bye"))    
hi
bye
perform: (functions: () => Unit*)Unit

快乐的编码。

@pst给了你答案,我只是补充一点,以备将来参考

假设您发现自己拥有以下函数集合:

val fcts = List(() => println("I hate"), () => println("this"))
如果您尝试在REPL中执行此操作

perform(fcts) // this does not compile
不行

但是,您可以告诉编译器,您真正想要实现的是将列表作为Java数组传递(这就是字节码中varargs的表示方式)

显然,这适用于任何Scala集合,而不仅仅是列表。

在Ruby中,我们称之为参数的“splatting”。
perform(fcts) // this does not compile
perform(fcts : _*) // works.