在scala中使用变长参数
我知道如何定义具有可变长度参数的方法:在scala中使用变长参数,scala,Scala,我知道如何定义具有可变长度参数的方法: case class taxonomy(vocabularies:(String,Set[String])*) 客户端代码非常干净: val terms=taxonomy("topics"->Set("economic","politic") ,"tag"->Set("Libya","evolution") ) 但我想知道,当我有一个变量(而不是一系列变量)
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"))
使用
:*
可以虚拟地转换一个序列参数,使其看起来像是一个多个参数被传递给了可变长度方法。然而,这种转换只适用于(有序的?)简单序列类型,而在本例中,不适用于映射
。因此,以前必须使用显式的toSeq
。我还不明白为什么这些转换不是隐式的(在适用的情况下)。我想这会让人相当困惑。
taxonomy(notFormattedTerms.toSeq:_*)