scala - 在 Scala 选项类型 isEmpty 方法中检查 None

标签 scala scala-option

我正在使用选项类型的 isEmpty 方法来检查是否没有值。我不想在我的情况下使用 case match,我只想检查是否有 None 因为我会抛出错误给来电者。但即使值为 NoneisEmpty 方法也会失败。

这是我尝试过的!

val questionOption = Question.getQuestionForQuestionId(userExam.get.examId, currQuesId + 1)

if(questionOption.isEmpty) {
    Left(Failure(FailureCode.NO_DATA_FOUND, "Cannot get next exam question you tampered your cookie or cookie is lost.... >> TODO... modify the exception message"))
} 

它没有进入 if 条件。我尝试对 QuestionOption 执行 println,但它打印 None 。所以想知道为什么我没有进入 if 条件。

最佳答案

从问题下的评论中,真正的问题出现了:

 val questionOption = Question.getQuestionForQuestionId(userExam.get.examId, currQuesId + 1) 
 if(questionOption.isEmpty) { 
   Left(Failure(FailureCode.NO_DATA_FOUND, "Cannot get next exam question you tampered your cookie or cookie is lost.... >> TODO... modify the exception message")) 
 }

就其本身而言,if 返回类型 Unit,因此您的语句不会返回任何有用的内容。如果您想返回某些内容,则需要添加一个 else ,然后返回结果类型的最小上限。因此

 >>> val yo = if(1 != 0) 4
 yo: Unit

 >>> val ya = if(1 != 0) Left(1) else Right("got it")
 ya: Either[Int, String]

关于scala - 在 Scala 选项类型 isEmpty 方法中检查 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843594/

相关文章:

inheritance - 扩展扩展有序的Scala类

scala - 在 asInstanceOf 中引用嵌套类

scala - 使用 json4s 序列化可选值类实例时出现问题

c# - 可选引用文献类型

Scala 排序列表并获取第 n 个元素

java - 从 Java 将 Scala Seq 传递给 Scala 函数

java - 如何使用多个行键从 cassandra 中的计数器列获取值?

scala - 在 Scala 中处理两个选项

Scala:类似 Option (Some, None) 但具有三种状态:Some、None、Unknown