3
我是一名Scala初学者,这段代码让我很困惑。在scala中对一系列值进行模式匹配
有没有办法做模式匹配,以确保我传递给数据的所有内容都是正确的类型?正如你可以看到我有很奇怪的数据类型...
class Data (
val recipient: String,
val templateText: String,
val templateHtml: String,
val blockMaps: Map[String,List[Map[String,String]]],
templateMap: Map[String,String]
)
...
val dataParsed = JSON.parseFull(message)
dataParsed match {
case dataParsed: Map[String, Any] => {
def e(s: String) = dataParsed get s
val templateText = e("template-text")
val templateHtml = e("template-html")
val recipient = e("email")
val templateMap = e("data")
val blockMaps = e("blkdata")
val dependencies = new Data(recipient, templateText, templateHtml, blockMaps, templateMap)
Core.inject ! dependencies
}
...
谢谢你的回答,但它实际上不起作用。我不确定我在做什么,但是在使用ant进行编译时,我遇到了这个错误。 错误:模式类型与预期类型不兼容; [scalac]实测值:字符串 [scalac]需要:选项[任意] [scalac] \t \t \t \t如果s:字符串=>一些(一个或多个) 停止向串,地图似乎是细.. – flagZ 2009-11-27 19:25:18
包裹每个值与Some解决了这个问题。 case(一些(templateText:String),一些(...)) 感谢开始寿 – flagZ 2009-12-03 14:32:51