То, как передать прозвище, повторило параметры в Scala?
Следующему коду не удается работать:
scala> def foo(s: (=> String)*) = {
<console>:1: error: no by-name parameter type allowed here
def foo(s: (=> String)*) = {
^
Есть ли какой-либо другой способ, которым я мог передать переменное количество по имени параметров к методу?
Это не очень красиво, но позволяет передавать параметры по имени varargs style
def printAndReturn(s: String) = {
println(s)
s
}
def foo(s: (Unit => String)*) {
println("\nIn foo")
s foreach {_()} // Or whatever you want ...
}
foo()
foo((Unit) => printAndReturn("f1"),
(Unit) => printAndReturn("f2"))
Это создает
In foo
In foo { {1}} f1 f2
Повторяющиеся поименные параметры в настоящее время не поддерживаются.