繁体   English   中英

scala:缺少扩展功能的参数类型:匿名函数的参数类型必须是完全已知的

[英]scala: missing parameter type for expanded function: the argument types of an anonymous function must be fully known

我是scala的新手,我完全不知道我的代码有什么问题:

我有一些Future可能会引发异常:

var clean: Future[Boolean];

但是,当我尝试绘制地图时

clean.map( b => {
  case true => Ok("success")
  case false => Ok("failed")
}).recover {
  case t => Ok("error: " + t)
}

我在标题中得到了指定的编译错误。我完全不知道代码的哪一部分和/或哪一部分导致了该错误。.我用谷歌搜索,但很难找到任何线索,因为scala语法非常灵活,因此变化很多在互联网上,但我得到的错误是非常令人误解的...

任何帮助将不胜感激...

按照编写的方式传递给.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%。

我想你打算:

clean.map( b => b match {
 case true => Ok("success")
 case false => Ok("failed")
}).recover {
 case t => Ok("error: " + t)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM