Scala value toInt不是选项[String]的成员

Scala value toInt不是选项[String]的成员,scala,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 Optio

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


谢谢

这意味着您的
id
是选项[String],而不是字符串。 此外,您可以在此处使用a进行理解

   val id = ( for {
       resID <- CartManager.getReservation(request) if resID.status == "FOUND"
       theID <- resID.id 
      } yield theID.toInt ) getOrElse -1
val id=(用于{

resID一种更好的功能性方法来完成您试图做的事情,如下所示:

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

使用
filter
筛选包含的
选项
值(如果存在),
map
CartManager
映射到
选项[Int]
getOrElse
选项中提取值,如果
选项为空,则默认值为
-1

resID.get.id.get.toInt
应该可以正常工作。但是,您应该首先检查
id
本身是否已定义。但最重要的是,您应该真正避免这样做g这些类型的检查使用模式匹配或
选项的方法,例如
选项.map
/
选项.flatMap
/
选项.getOrElse
/
选项.orElse