我知道如何定义一个带有可变长度参数的方法:
case class taxonomy(vocabularies:(String,Set[String])*)
Run Code Online (Sandbox Code Playgroud)
和客户端代码非常干净:
val terms=taxonomy("topics"->Set("economic","politic")
,"tag"->Set("Libya","evolution")
)
Run Code Online (Sandbox Code Playgroud)
但我想知道当我有一个变量(而不是变量序列)时,我如何使用这个案例类,如下所示:
val notFormattedTerms = Map("topics"->Set("economic","politic")
,"tag"->Set("Libya","evolution"))
Run Code Online (Sandbox Code Playgroud)
Deb*_*ski 24
taxonomy(notFormattedTerms.toSeq:_*)
Run Code Online (Sandbox Code Playgroud)
随着: _*
你几乎变换序列参数,所以它看起来仿佛几个参数已经传递到可变长度的方法.但是,这种转换仅适用于(有序?)简单序列类型,并且在本例中不适用于a Map
.因此,必须先使用明确的toSeq
.