如何在Scala中检查Option是否为None

时间:2019-03-11 20:42:28

标签: scala

我有以下代码,从数据库返回的内容可能是一条记录,也可能什么都没有,一旦获得数据库返回,我会检查它是否具有record(EmailStatus object),然后将其转换为单个EmailStatus的列表对象,否则返回默认EmailStatus对象的列表

database
      .getLatestEmailStatusByEmail(email)
      .map(
        emailStatusDTO =>
          if (emailStatusDTO == None) List(emailStatusDTO.default(email))
          else List(emailStatusDTO)
      )
      .leftMap[HttpError] {
        case e =>
          logger.error(LoggingMessage(
            requestId,
            s"Retrieve events by ${email} failed, ${e.getClass.getSimpleName} : ${e.message}"))
          DatabaseError(e.message, requestId)
      }

但投诉:

comparing case class values of types .core.dto.EmailStatusDTO and None.type using `==' will always yield false
          if (emailStatusDTO == None) 

从数据库返回的类型:

database.getLatestEmailStatusByEmail(email)

type ServiceResult[Err, A] = EitherT[Future, Err, A]
def apply[A](a: Future[Option[A]], error: Err)(
        implicit ec: ExecutionContext): ServiceResult[Err, A] =
      EitherT(a map (data => Either.fromOption(data, error)))
  }

EmailStatus是一个案例类。

因此,在我的情况下,它将返回Future[Option[EmailStatusDto]],所以如何检查数据库返回是否为None?

还将支票更改为isEmpty,但也无效:

if (emailStatusDTO.isEmpty) List(EmailStatusDTO.normal(email.email))

if (emailStatusDTO.isEmpty()) List(EmailStatusDTO.normal(email.email)) 它说“无法解析符号isEmpty”

0 个答案:

没有答案