Data type
- java에서 사용하는 타입 사용 가능
- def - no type (type을 명시하는 것을 권장)
- float, int, String, …
- String - 작은 따옴표, 큰 따옴표로 사용
- 큰 따옴표는 값을 주입 받을 수 있음
name=“test”
s= “hello ${name}”
- 작은 따옴표 3개는 multi line string
s = ‘’’
Hi,
This is Test
‘’’
- 정규식도 사용 가능
emailPatter = /([a-zA-Z0-9+-\_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)/ # 슬래시(/) 사이에 작성함
println “test@email.com“ ==~ emailPattern.
Closure
a = {
println("This is Groovy Closure");
}
a.call()
b = { n ->
println(n%2 == 0? "짝수": "홀수")
}
b.call(10)
c = { n=2 ->
println(n%2 == 0? "짝수": "홀수")
}
c.call()
- 특정 회수 looping
- it는 파라미터 정의를 생략하고, 파라미터를 전달 받은 형태로 사용 가능함
5.times { n-> print n }
5.times { print it }
Collections
l = [1, 2, 3]
LinkedList l = [1, 2, 3]
l << 4
l = l + [5, 6]
l = l - [5, 6]
l.each { println it }
l.reverseEach { println it }
l.eachPermutation { println it }
s = ['one', 'two', 'three', 'one'] as Set
m = [:]
m = [language: 'groovy', level: 5]
m.each { k,v ->
println k
println v
}
println m.language
println m['language']
println m.get('language')
m.subtitle = 'weird language'
Methods
int getTotalAmount(int price, int quantity){
return price * quantity
}
def getTotalAmount(price = 10, quantity){
price * quantity
}
amount = getTotalAmount 20, 30
println amount
void printProductInfo(Map product){
println product.name
println product.price
}
printProductInfo([name: "test", price: 10])
printProductInfo(name: "test", price: 10)
printProductInfo name: "test", price: 10
Classes / Objects
class Person{
def name, age, gender
static group = "School"
static void printGroup(){
println group
}
}
p = new Person(name: "Linus", age: 11, gender: "male")
println p.name + " " + p.age + " " + p.gender
Person.printGroup()