используя аргумент переменной длины в Scala - PullRequest
10 голосов
/ 22 февраля 2011

Я знаю, как определить метод с аргументом переменной длины:

  case class taxonomy(vocabularies:(String,Set[String])*)

, а код клиента очень чистый:

  val terms=taxonomy("topics"->Set("economic","politic")
                   ,"tag"->Set("Libya","evolution")
                   )

, но я хочу знать, как я могу использовать этоКласс case, когда у меня есть переменная (вместо последовательности переменных), например:

val notFormattedTerms = Map("topics"->Set("economic","politic")
       ,"tag"->Set("Libya","evolution"))

1 Ответ

24 голосов
/ 22 февраля 2011
taxonomy(notFormattedTerms.toSeq:_*)

С : _* вы фактически преобразуете аргумент последовательности так, чтобы он выглядел так, как будто несколько аргументов были переданы методу переменной длины. Это преобразование, однако, работает только для (упорядоченных?) Простых типов последовательностей и, как в этом случае, не для Map. Следовательно, перед этим нужно будет использовать явный toSeq.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...