【发布时间】:2014-01-17 13:52:17
【问题描述】:
我正在使用选项类型的isEmpty 方法来检查是否没有值。我不想在我的情况下使用casematch,我只想检查是否有None,因为我会向调用者抛出错误。但是isEmpty 方法会失败,即使值为None。
这是我尝试过的!
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 条件。
【问题讨论】:
-
你能展示一些复制这个问题的代码吗?
-
case object None extends Option[Nothing] { def isEmpty = true; ...} -
您可能做错了什么,或者对问题的描述具有误导性。如果您将 None.isEmpty 粘贴到 REPL 中,它将返回 true。
-
“isEmpty 方法失败”是什么意思? isEmpty 为 None 返回 true,与 isDefined 相反:也许你搞糊涂了?
-
我注意到它进入了 if 条件,但我从 if 条件中返回。该方法的返回类型是 Either。怎么回不去了?我在这里错过了什么吗?
标签: scala scala-option