152 lines
2.8 KiB
Markdown
152 lines
2.8 KiB
Markdown
|
### Enums
|
||
|
Enums sind gleich wie in Java
|
||
|
|
||
|
```Groovy
|
||
|
enum Day{
|
||
|
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
|
||
|
}
|
||
|
|
||
|
Day today = Day.MONDAY
|
||
|
```
|
||
|
|
||
|
Man kann in Enums zusätzlich noch Eigenschaften und Methoden einbauen
|
||
|
|
||
|
```Groovy
|
||
|
enum Day{
|
||
|
MONDAY("First Day of the Week"),
|
||
|
TUESDAY("Second Day of the Week),
|
||
|
//...
|
||
|
|
||
|
final String description
|
||
|
|
||
|
Day(String description){
|
||
|
this.description = description
|
||
|
}
|
||
|
|
||
|
String getDescription(){
|
||
|
return description
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Day today = Day.FRIDAY
|
||
|
def description = today.getDescription
|
||
|
println("Today is $today: $description")
|
||
|
|
||
|
```
|
||
|
|
||
|
Zusätzlich dazu kann man auch Methoden überschreiben (z.B. toString()-Methode)
|
||
|
|
||
|
### Ranges
|
||
|
Ähnlich wie in Ruby, jedoch nicht gleich
|
||
|
```Groovy
|
||
|
1..10 // Inklusive 10
|
||
|
1..<10 // Exklusive 10
|
||
|
'a'..'x' // Kann auch aus Character bestehen
|
||
|
10..1 // Kann auch absteigende Reihenfolge haben
|
||
|
'x'..'a' // Character können auch absteigende Reihenfolge haben
|
||
|
```
|
||
|
|
||
|
Nützliche Methoden auf Ranges:
|
||
|
- contains()
|
||
|
- get()
|
||
|
- getFrom()
|
||
|
- getTo()
|
||
|
- isReverse()
|
||
|
- size()
|
||
|
- subList()
|
||
|
|
||
|
### Arrays
|
||
|
- von allen Typen können Arrays erstellt werden
|
||
|
- Größe muss angegeben werden, sind nicht dynamisch
|
||
|
|
||
|
```Groovy
|
||
|
int[] intArray = new int[4];
|
||
|
intArray[2] = 2
|
||
|
println intArray // [0,0,2,0]
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
### Lists
|
||
|
Listen sind geordnete Sammlungen von Elementen.
|
||
|
|
||
|
```Groovy
|
||
|
def list = [0,1,2,3]
|
||
|
println list // [0,1,2,3]
|
||
|
println list[0] // [0]
|
||
|
|
||
|
list << 4 // Hinzufügen eins Elements am Ende der Liste
|
||
|
println list // [0,1,2,3,4]
|
||
|
|
||
|
list.add(0,20) // [Index, Wert]
|
||
|
println list // [20,0,1,2,3,4]
|
||
|
```
|
||
|
|
||
|
|
||
|
### Maps
|
||
|
Eine Map ist eine ungeordnete Collection von Objekt-Referenzen.
|
||
|
|
||
|
```Groovy
|
||
|
def map = [name: "Peter", alter: 81]
|
||
|
```
|
||
|
|
||
|
Zugriff auf Map:
|
||
|
|
||
|
```Groovy
|
||
|
println map.name // "Peter"
|
||
|
println map["alter"] // 81
|
||
|
```
|
||
|
|
||
|
Hinzufügen von Schlüssel-Wert
|
||
|
|
||
|
```Groovy
|
||
|
map["Auto"] = "Bugatti"
|
||
|
println map["Auto"] // "Bugatti"
|
||
|
```
|
||
|
|
||
|
Entfernen von Elementen
|
||
|
|
||
|
```Groovy
|
||
|
def map [hello: "World", erde: "Rund", eins: "Zwei"]
|
||
|
println map // [hello: "World", erde: "Rund", eins: "Zwei"]
|
||
|
def newMap = map.minus([hello: "World"])
|
||
|
println newMap // [erde: "Rund", eins: "Zwei"]
|
||
|
```
|
||
|
Die `minus()`Methode nimmt eine Map als Argument und gibt eine neue Map, mit den entfernten Schlüssel-Wert Paaren zurück
|
||
|
|
||
|
-----Man kann auch Closure* benutzen----
|
||
|
|
||
|
|
||
|
Eine leere Map wird wie folgt definiert:
|
||
|
```Groovy
|
||
|
def emptyMap = [:]
|
||
|
```
|
||
|
|
||
|
|
||
|
\* Clojure ist ein Codeblock, der lokal erstellt wird und Zugriff auf umgebende Variablen hat
|
||
|
|
||
|
|
||
|
### Sets
|
||
|
Ungeordnete Sammlung von eindeutigen Elementen.
|
||
|
(Keine Dubletten)
|
||
|
|
||
|
```Groovy
|
||
|
def mySet = [1,1,1,2,3,3,4,5,5,5,5] as Set
|
||
|
println mySet //[1,2,3,4,5]
|
||
|
```
|
||
|
Hinzufügen eines Elements:
|
||
|
```Groovy
|
||
|
mySet << 6
|
||
|
println mySet // [1,2,3,4,5,6]
|
||
|
// oder
|
||
|
mySet.add(7)
|
||
|
println mySet // [1,2,3,4,5,6,7]
|
||
|
```
|
||
|
|
||
|
Entfernen eines Elements:
|
||
|
```Groovy
|
||
|
mySet.remove(1)
|
||
|
println mySet // [2,3,4,5,6,7]
|
||
|
```
|
||
|
|