Я начинающий Scala, и этот кусок кода заставляет меня бороться.сопоставление шаблонов по ряду значений в scala
Есть ли способ сделать сопоставление с образцом, чтобы убедиться, что все, что я перехожу к Data, имеет правильный тип? Как вы можете видеть, у меня есть довольно странные типы данных ...
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
}
...
Благодарим вас за ответ, но он на самом деле не работает. Я не уверен, что делаю все правильно, но я получаю эту ошибку при компиляции с муравьем в обоих случаях. ошибка: тип шаблона несовместим с ожидаемым типом; [scalac] найдено: String [scalac] требуется: Опция [Любой] [scalac] \t \t \t \t сек Кейс: String => Некоторые (s) останавливается на строке, карты, кажется, хорошо .. – flagZ
упаковка каждый значение с некоторыми решает проблему. case (Some (templateText: String), Some (...)) спасибо за начало – flagZ