В Scala, как я определяю анонимную функцию, которая берет переменное количество аргументов?
scala> def foo = (blah:Int*) => 3
<console>:1: error: ')' expected but identifier found.
def foo = (blah:Int*) => 3
^
Похоже, это невозможно. В спецификации языка в главе 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