Scala:将参数名称和类型存储在哈希映射中

Gla*_*t0r 4 types scala

我对scala比较新.我试图在哈希映射中维护一个包含属性列表及其类型的哈希映射.我试过这样的事

val attribTemplate = new mutable.LinkedHashMap[String, Class]

attribTemplate("attr1") = classOf[Int]

attribTemplate("attr2") = classOf[String]
Run Code Online (Sandbox Code Playgroud)

斯卡拉不喜欢它.我想稍后对这种类型的信息进行模式匹配我该如何实现?谢谢

Tra*_*own 5

Class是通用的,Scala不像Java那样允许你忽略这样的事实.以下将工作得很好:

val attribTemplate = new LinkedHashMap[String, Class[_]]
attribTemplate("attr1") = classOf[Int]
attribTemplate("attr2") = classOf[String]
Run Code Online (Sandbox Code Playgroud)

然后:

scala> println(attribTemplate)
Map(attr1 -> int, attr2 -> class java.lang.String)
Run Code Online (Sandbox Code Playgroud)

不过,这几乎肯定是一个坏主意,并不是惯用的Scala.特别是如果你是Scala的新手,我建议你提出另一个关于你的特定用例的问题,并尽可能避免反思(以及可变性,如果可以的话).

  • ......在我的书中也属于"几乎肯定是一个坏主意"的范畴. (2认同)