Devolver booleano con If-Else en Scala
Este artículo nos enseñará cómo devolver valores booleanos cuando se trabaja con if-else
en Scala.
Devolver booleano con if-else
en Scala
Veamos un escenario para entenderlo mejor.
def check(): Boolean = {
for ((digit1,digit2,digit3) <- digitsSet){
if ((1,5,6) == (digit1,digit2,digit3))
true
else
false
}
}
val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))
En el código anterior, estamos tratando de encontrar si nuestro conjunto contiene esos tres dígitos, por lo que esperamos ya sea true
o false
como la salida, pero cuando se ejecuta el código anterior, obtenemos el siguiente error.
type mismatch;
found : Unit
required: Boolean
for ((digit1,digit2,digit3) <- digitsSet){
El problema es que la función debería devolver Booleano en lugar de Unidad
.
Entonces podemos resolver este problema de diferentes maneras.
-
Usar el método
contains
para encontrar un elemento en nuestro conjunto. Devuelvetrue
si el elemento está presente; else devuelvefalse
.Esta es una forma más elegante de escribir el código anterior.
Código de ejemplo:
val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57)) println(digitsSet.contains((10,20,30)))
Producción:
true
-
Añadiendo una sentencia
return
antes detrue
yfalse
. Esta es la mejor manera, ya que es versátil y se puede utilizar en casi cualquier escenario.val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57)) def check(): Boolean = { val store = for ((digit1,digit2,digit3) <- digitsSet) { if ((10,20,30) == (digit1,digit2,digit3)) return true } false } println(check())
Producción:
true
-
Usando el método
exists
en Scala.val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57)) println(digitsSet.exists( _ == (1,20,50) ))
Producción:
false