Scala:如何使用变量参数列表定义匿名函数?

Mar*_*tin 12 scala anonymous-function

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

scala> def foo = (blah:Int*) => 3
<console>:1: error: ')' expected but identifier found.
       def foo = (blah:Int*) => 3
                          ^
Run Code Online (Sandbox Code Playgroud)

mic*_*ebe 19

看起来这是不可能的.在第6.23章匿名函数语言规范中,语法不允许在类型之后.在第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
Run Code Online (Sandbox Code Playgroud)

  • 这在 Scala 2.12 中对我不起作用: &lt;console&gt;:13: error: Too much argument (3) for method apply: (v1: Seq[String])Unit in Trait Function1 (2认同)