我正在使用选项类型的 isEmpty
方法来检查是否没有值。我不想在我的情况下使用 case
match
,我只想检查是否有 None
因为我会抛出错误给来电者。但即使值为 None
,isEmpty
方法也会失败。
这是我尝试过的!
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/