Devolver booleano con If-Else en Scala

Suraj P 21 junio 2022
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.

  1. Usar el método contains para encontrar un elemento en nuestro conjunto. Devuelve true si el elemento está presente; else devuelve false.

    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
    
  2. Añadiendo una sentencia return antes de true y false. 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
    
  3. 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
    
Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub