HOWTO · Scala

Boolesche Rückgabe mit If-Else in Scala

Dieser Artikel behandelt die Rückgabe von Boolean bei der Arbeit mit if-else in Scala.

Dieser Artikel wird uns beibringen, wie man boolesche Werte zurückgibt, wenn man mit if-else in Scala arbeitet.

Boolesche Rückgabe mit if-else in Scala

Sehen wir uns ein Szenario an, um es besser zu verstehen.

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))

Im obigen Code versuchen wir herauszufinden, ob unser Set diese drei Ziffern enthält, also erwarten wir entweder true oder false als Ausgabe, aber wenn der obige Code ausgeführt wird, erhalten wir den folgenden Fehler.

type mismatch;
 found   : Unit
 required: Boolean
    for ((digit1,digit2,digit3) <- digitsSet){

Das Problem ist, dass die Funktion Boolean statt Unit zurückgeben soll.

Wir können dieses Problem also auf unterschiedliche Weise lösen.

  1. Verwendung der contains-Methode, um ein Element in unserer Menge zu finden. Es gibt true zurück, wenn das Element vorhanden ist; sonst gibt false zurück.
Dies ist eine elegantere Art, den obigen Code zu schreiben.

Beispielcode:

```scala
val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))
println(digitsSet.contains((10,20,30)))
```

Ausgabe:

```text
true
```
  1. Hinzufügen einer return-Anweisung vor true und false. Dies ist der beste Weg, da er vielseitig ist und in fast jedem Szenario verwendet werden kann.

    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())
    
Ausgabe:

```text
true
```
  1. Verwenden der exists-Methode in Scala.

    val digitsSet = Set((10,20,30),(1,5,6),(78,109,23),(14,25,57))
    
    println(digitsSet.exists( _ == (1,20,50) ))
    

    Ausgabe:

    false