在Scala中,如何定义一个带有可变数量参数的匿名函数?
scala> def foo = (blah:Int*) => 3
<console>:1: error: ')' expected but identifier found.
def foo = (blah:Int*) => 3
^
答案 0 :(得分:19)
看起来这是不可能的。在第6.23章匿名函数的language specification中,语法不允许在类型之后使用*
。在类型之后的第4.6章函数声明和定义中,可以有*
。
你可以做的是:
scala> def foo(ss: String*) = println(ss.length)
foo: (ss: String*)Unit
scala> val bar = foo _
bar: (String*) => Unit = <function1>
scala> bar("a", "b", "c")
3
scala> bar()
0