some none has example check scala scala-option

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.