Scala - 无法解析符号 flatMap
Posted
技术标签:
【中文标题】Scala - 无法解析符号 flatMap【英文标题】:Scala - Cannot resolve symbol flatMap 【发布时间】:2021-10-19 04:50:31 【问题描述】:def pinShare(id: String, teamOpt: Option[String], expireTime: Long, interestOpt: Option[List[Interest]]): Future[Unit] =
for
teamObj <- teamOpt.map(team => teamRepository.getTeam(team)).getOrElse(Future.successful(None))
interestObj <- interestOpt.getOrElse(TR) // **says cannot resolve symbol flatmap here.**
share <- shareRepository.findOneById(id).getOrFailWith(ShareNotFoundException)
_ <- shareRepository.pinShare(share.id, teamObj, expireTime, interestObj)
yield
Future(postUpdateActions(id, None))
()
在interestObj 行上显示“无法解析符号flatMap”。我该如何解决这个问题?
【问题讨论】:
TR
是如何定义的?
这是一个值(字符串)。值(“tr”)
如果你能在你的代码中提供所有函数的最小版本会有所帮助,只有类型签名就足够了,它们的实现总是可以???
【参考方案1】:
你的问题是 interestOpt.getOrElse(TR)
没有 List
类型。
声明TR
具有List[Interest]
类型。
【讨论】:
这仍然行不通,因为由于在单个for
中混合了多个 monad,代码还有许多其他错误
我无法解决我看不到的问题:(
是的,完全同意,这就是为什么我要求 OP 澄清,因为我也不明白预期的行为是什么。尤其是yield
中的Future
真的让我很困惑。【参考方案2】:
改变这行表格
interestObj <- interestOpt.getOrElse(TR)
到
interestObj = interestOpt.getOrElse(TR)
【讨论】:
这将严重改变语义。我也怀疑它会编译。以上是关于Scala - 无法解析符号 flatMap的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ Idea 无法解析 Scala 管理源中的符号 (sbt-buildinfo)
DefaultParsers:无法解析符号导入 sbt.complete.DefaultParsers._
Intellij IDEA 设置:无法解析符号 println