Scala: Как определить анонимную функцию с помощью списка переменных аргументов? - PullRequest
11 голосов
/ 07 июля 2010

Как в Scala определить анонимную функцию, которая принимает переменное число аргументов?

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

1 Ответ

19 голосов
/ 07 июля 2010

Похоже, это невозможно.В спецификации языка в главе 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
...