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