我是scala的新手,我根本不知道我的代码有什么问题:
我有一些Future
可能会抛出异常:
var clean: Future[Boolean];
然而,当我尝试映射
时clean.map( b => {
case true => Ok("success")
case false => Ok("failed")
}).recover {
case t => Ok("error: " + t)
}
我得到了标题中指定的编译错误..我完全不知道我的代码在哪里和/哪部分确切地导致它...我已经googled但是很难找到任何线索,因为scala语法非常灵活因此互联网上有如此多的变化,但我得到的错误是误导......
任何帮助都将非常感谢...
答案 0 :(得分:4)
您传递给.map
的函数应该接受一个布尔参数b
,并返回另一个函数(花括号中的东西)。编译器无法猜测该内部函数的类型,因此它抱怨参数类型未知。
这实际上是一件好事,因为它根本不是你真正想写的东西。
只需删除整个(b => ...)
商家:
clean.map {
case true => Ok("success")
case false => Ok("failed")
}.recover {
case t => Ok("error: " + t)
}
另外,请clean
val
而不是var
。可变变量不是一个好主意。 99%的时间,在scala中编写代码,你不应该需要它们,所以,我建议你暂时假装var
关键字根本不存在,直到你学会了足够的语言。能够识别实际需要可变状态的1%的情况。
答案 1 :(得分:2)
我猜你有意:
clean.map( b => b match {
case true => Ok("success")
case false => Ok("failed")
}).recover {
case t => Ok("error: " + t)
}