在scala中使用可变长度参数

时间:2011-02-22 15:05:44

标签: 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 个答案:

答案 0 :(得分:24)

taxonomy(notFormattedTerms.toSeq:_*)

使用: _*,您实际上转换了一个序列参数,使其看起来好像已经将几个参数传递给了可变长度方法。但是,此转换仅适用于(有序?)简单序列类型,并且在本例中不适用于Map。因此,必须先使用明确的toSeq