none - scala option get
Compruebe si hay ninguno en Scala Opción tipo método isEmpty (2)
Estoy usando el método isEmpty
del Tipo de isEmpty
para verificar si no hay un valor. No quiero usar la match
case
como en mi situación, solo quiero comprobar si no hay None
ya que le daría un error a la persona que llama. Pero el método isEmpty
falla aunque el valor sea None
.
¡Aquí está lo que intenté!
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"))
}
No está entrando en la condición if. Traté de hacer una impresión en la pregunta y se imprime Ninguna. Así que me pregunto por qué no estoy entrando en la condición if.
Del comentario bajo la pregunta, surge el problema real:
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"))
}
Por sí mismo, if
devuelve el tipo de Unit
para que su declaración no devuelva nada útil. Si desea devolver algo, debe agregar uno u else
que luego devuelva el límite superior inferior de los tipos de resultados. Por lo tanto
>>> val yo = if(1 != 0) 4
yo: Unit
>>> val ya = if(1 != 0) Left(1) else Right("got it")
ya: Either[Int, String]
Puede hacer una verificación booleana para ver si el valor es Ninguno y lanzar el error a la persona que llama, si es así, continúe el proceso:
scala> val o: Option[Any] = None
o: Option[Any] = None
scala> println(o == None)
true
scala> println(o != None)
false
Pero tal vez una mejor manera de lograr lo que está tratando de hacer, alertar a la persona que llama del error o continuar procesando, sería usar el lenguaje de Try de Scala para manejar los errores.