我是Scala的新手,我无法弄清楚这一点。我相信这是一个简单的解决方案,但作为一个新手,我找不到它。
我有这段代码
val resID = CartManager.getReservation(request)
val id = if (resID.isDefined && resID.get.status == "FOUND") resID.get.id.toInt else -1
它给了我一个错误:
value toInt is not a member of Option[String]
如果定义了对象,我如何获取对象的id?
谢谢
答案 0 :(得分:2)
实现你想要做的事情的更好的功能方式是这样的:
val id = CartManager.getReservation(request).filter(_.status == "FOUND").map(_.id.toInt).getOrElse(-1)
使用filter
过滤下包含的Option
值(如果存在),map
将CartManager
映射到Option[Int]
和{{ 1}}如果getOrElse
为空,则使用默认值Option
从-1
中提取值。
答案 1 :(得分:0)
这意味着您的id
是Option [String],而不是String。
此外,您可以在此处使用for-comprehension。
val id = ( for {
resID <- CartManager.getReservation(request) if resID.status == "FOUND"
theID <- resID.id
} yield theID.toInt ) getOrElse -1