Apache Groovy #6: Operatoren

In diesem Beitrag möchte ich dir kurz die Operatoren in Apache Groovy vorstellen.

Wenn du bereits eine Scriptsprache kennst, dann sollten diese dir nicht unbekannt sein.

Mathematische Operatoren in Apache Groovy

Zu den mathematischen Operatoren zählen:

  • Addition +
  • Subtraktion –
  • Multiplikation *
  • Division /
  • Modulo %
  • Quadratwurzel **

Beispiele

def a = 15+1
assert a == 16

def b = 15-1
assert b == 14

def c = 15*2
assert c == 30

def d = 14 / 2
assert d == 7

def e = 15 % 5
assert e == 0

Ausgabe in der GroovyConsole:

groovy> def a = 15+1 
groovy> assert a == 16 
groovy> def b = 15-1 
groovy> assert b == 14 
groovy> def c = 15*2 
groovy> assert c == 30 
groovy> def d = 14 / 2 
groovy> assert d == 7 
groovy> def e = 15 % 5 
groovy> assert e == 0 

Zuweisungsoperatoren

Wenn wir eine Variable um einen Wert X inkrementieren oder dekrementieren möchten so können wir entweder die „lange“ Schreibweise verwenden oder aber durch einen Zuweisungsoperator die Arbeit etwas verkürzen.

def a = 10
assert (a += 5) == 15

def b = 25
assert (b *= 2) == 50

def c = 12
assert (c /= 2) == 6

Ausgabe in der GroovyConsole:

groovy> def a = 10 
groovy> assert (a += 5) == 15 
groovy> def b = 25 
groovy> assert (b *= 2) == 50 
groovy> def c = 12 
groovy> assert (c /= 2) == 6 

Relationale Operatoren

Mit den relationalen Operatoren haben wir bereits in dem Beitrag Apache Groovy #4: Kontrollstrukturen gearbeitet. Daher sollte dir dieses Konstrukt nicht unbekannt sein.

Wir verwenden relationale Operatoren um Variablen & Werte gegeneinander zu vergleichen.

Beispiele

def a = 10
assert a > 5

def b = 25
assert b < 30

def c = 12
assert c <= 12
assert c >= 12

assert c == 12

Ausgabe in der GroovyConsole:

groovy> def a = 10 
groovy> assert a > 5 
groovy> def b = 25 
groovy> assert b < 30 
groovy> def c = 12 
groovy> assert c <= 12 
groovy> assert c >= 12 
groovy> assert c == 12 

Logische Operatoren

Die logischen Operatoren haben wir ebenso wie die relationalen Operationen bereits bei den Kontrollstrukturen gesehen, jedoch möchte ich hier etwas tiefer in diese eintauchen.

Das Ergebnis einer Prüfung mit einem logischen Operator ist immer ein boolescher Wert, also Wahr/Falsch oder true/false.

Beispiele

def a = !false
assert a == true

def b = true && true
assert b == true

def c = true && false
assert c == false

def d = false && false
assert d == false

def e = true || false
assert e == true

def f = false || true
assert f == true

Ausgabe in der GroovyConsole:

groovy> def a = !false 
groovy> assert a == true 
groovy> def b = true && true 
groovy> assert b == true 
groovy> def c = true && false 
groovy> assert c == false 
groovy> def d = false && false 
groovy> assert d == false 
groovy> def e = true || false 
groovy> assert e == true 
groovy> def f = false || true 
groovy> assert f == true 

Ternäre Operatoren

Mit einem ternären Operator kann man eine Prüfung und eine Zuweisung zu einer Variable in eine Zeile zusammenfassen.

Beispiel

Wir haben diese If-Bedingung in welcher wir prüfen, ob das Feld „name“ gefüllt ist und dann je nach Bedingung das Feld „msg“ befüllen.

def name = ""
def msg = ""
if(name){
    msg = "Der Name ist $name"
} else {
    msg = "Der Name ist leer"
}

println msg

Ausgabe in der GroovyConsole:

groovy> def name = "" 
groovy> def msg = "" 
groovy> if(name){ 
groovy>     msg = "Der Name ist $name" 
groovy> } else { 
groovy>     msg = "Der Name ist leer" 
groovy> } 
groovy> println msg 
 
Der Name ist leer

Mit einem ternären Operator können wir dieses nun deutlich verschlanken und in eine einzige Zeile zusammenfassen.

def name = ""
def msg = name ? "Der Name ist $name" :  "Der Name ist leer"
println msg

Ausgabe in der GroovyConsole:

groovy> def name = "" 
groovy> def msg = name ? "Der Name ist $name" :  "Der Name ist leer" 
groovy> println msg 
 
Der Name ist leer

Elvis Operator

Der Elvis Operator ist noch einmal kürzer als der bisherige ternäre Operator, jedoch dient dieser eher dazu ein Feld zu prüfen und ggf. bei einem leeren Feld einen Wert zuzuweisen.

def name = "Stefan"
def msg = name ?: "Der Name ist leer"
println msg

name = ""
msg = name ?: "Der Name ist leer"
println msg

Ausgabe in der GroovyConsole:

groovy> def name = "Stefan" 
groovy> def msg = name ?: "Der Name ist leer" 
groovy> println msg 
groovy> name = "" 
groovy> msg = name ?: "Der Name ist leer" 
groovy> println msg 
 
Stefan
Der Name ist leer

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.