groovy-lecture/notizen.md

2.0 KiB

Ideen für Aufgaben:

  • Schere Stein Papier in Groovy, ohne eine Klasse zu benutzen (zuhause)
  • Gegebenen Java Code in Groovy umwandeln und dabei den Code so kurz wie möglich halten.

Besonderheiten in Groovy:

  • Gleiche Schlüsselwörter wie in Java, Schlüsselwörter können jedoch auch als Methoden- /Variablennamen verwendet werden

       public class Hi {
          public static void main (String [] args) {
          new Hi().this()
      }
    
        def "this"() {
          print "hello"
        }
    
          }
    

Man sollte dies aber vermeiden, da es nur für Verwirrung sorgt und in den meisten Fällen hat man nichts davon.

  • Variablennamen dürfen nicht mit Zahlen beginnen, jedoch mit Underscores (_), Dollarzeichen ($) oder Buchstaben.

  • Triple Quoted Strings: Gehen über meherere Zeilen hinweg

      def a = '''Dies
      ist
      Ein
      riple Quoted String'''
    
      print a
    
  • Man kann in Strings Platzhalter verwenden und somit Variablenwerte dynamisch in die Strings einfügen (vgl. Ruby #{}). Strandardmäßig werden in Groovy Strings aus der Klasse java.lang.String benutzt (also Java Strings). Benutzt man jedoch einen Platzhalter im Stringliteral, handelt es sich um einen GString aus der Klasse groovy.lang.GString

  def welt = "World!"
  def hallo = "Hello ${welt}"
  print hallo // "Hello World!"
  • Es ist auch erlaubt Berechnungen innerhalb des Platzhalters durchzuführen. Auch das wäre also ein gültiger Groovy Code:
  def str = "2 + 3 ergibt: ${2+3}";
  print str // "2 + 3 ergibt: 5
  • Man darf sogar mehrere Statements innerhalb des Platzhalters verwenden, jedoch wird empfohlen dies zu vermeiden.
  def str = "The sum of 1 and 2 is equal to ${def a = 1; def b = 2; a + b}"
  print str //  "The sum of 1 and 2 is equal to 3"
  • Auch Attribute von Objekten dürfen in Kombination mit dem "$" Zeichen als Platzhalter verwendet werden. Angenommen wir haben ein Objekt einer Klasse A (a) mit einem Attribut attr (Wert: 0)
print "Wert: $a.attr" // "Wert: 0"