Scala值toInt不是Option [String]的成员

时间:2014-07-21 16:25:38

标签: scala

我是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?

谢谢

2 个答案:

答案 0 :(得分:2)

实现你想要做的事情的更好的功能方式是这样的:

val id = CartManager.getReservation(request).filter(_.status == "FOUND").map(_.id.toInt).getOrElse(-1)

使用filter过滤下包含的Option值(如果存在),mapCartManager映射到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