Используя аргумент переменной длины в scala
Я знаю, как определить метод с аргументом переменной длины:
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
taxonomy(notFormattedTerms.toSeq:_*)
С : _*
вы фактически преобразуете аргумент последовательности, чтобы он выглядел так, как если бы несколько методов были переданы методу переменной длины. Это преобразование, однако, работает только для (упорядоченных?) Простых типов последовательностей и, как в этом случае, не для a Map
. Таким образом, перед использованием будет использоваться явный toSeq
.