14

在 Scala 中,如何定义一个接受可变数量参数的匿名函数?

scala> def foo = (blah:Int*) => 3
<console>:1: error: ')' expected but identifier found.
       def foo = (blah:Int*) => 3
                          ^
4

1 回答 1

19

看起来这是不可能的。在第 6.23 章匿名函数的语言规范中,语法不允许after 类型。在第 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
于 2010-07-07T13:22:57.610 回答