Прозвище повторило параметры

То, как передать прозвище, повторило параметры в Scala?

Следующему коду не удается работать:

scala> def foo(s: (=> String)*) = {
<console>:1: error: no by-name parameter type allowed here
       def foo(s: (=> String)*) = {
                   ^

Есть ли какой-либо другой способ, которым я мог передать переменное количество по имени параметров к методу?

10
задан Green Hyena 25 April 2010 в 04:46
поделиться

2 ответа

Это не очень красиво, но позволяет передавать параметры по имени 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

4
ответ дан 3 December 2019 в 21:58
поделиться

Повторяющиеся поименные параметры в настоящее время не поддерживаются.

10
ответ дан 3 December 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: