Groovy 기초

Codelist·2023년 4월 21일
0

gradle

목록 보기
4/7

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. // ==~는 동일한지와 pattern도 동일한지 체크함

Closure

  • java Lambda와 비슷함
a = {
	println("This is Groovy Closure");
}
a.call()  // This is Groovy Closure

b = { n ->   // 파라미터 전달
	println(n%2 == 0? "짝수": "홀수")
}
b.call(10)  // 짝수

c = { n=2 ->   // Default 값 세팅
	println(n%2 == 0? "짝수": "홀수")
}
c.call()  // 짝수
  • 특정 회수 looping
  • it는 파라미터 정의를 생략하고, 파라미터를 전달 받은 형태로 사용 가능함
5.times { n-> print n }  // 01234
5.times { print it }  // 01234

Collections

  • List
l = [1, 2, 3]  // list
LinkedList l = [1, 2, 3]  // LinkedList

// add element
l << 4
l = l + [5, 6]

// remove elements
l = l - [5, 6]

l.each { println it }  // collection looping
l.reverseEach { println it }  // collection reverse looping
l.eachPermutation { println it }  // 모든 조합으로 출력
  • Set
s = ['one', 'two', 'three', 'one'] as Set
  • Map
m = [:]		// empty map
m = [language: 'groovy', level: 5]
m.each { k,v ->
	println k
	println v
}

// 아래 3가지 모두 동일함. 값을 추가할 때도 사용 가능함
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){  // default 설정 가능함
	price * quantity   // 마지막 구문이 return 구문이 됨
}

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)   // Map은 대괄호를 생략가능
printProductInfo name: "test", price: 10 	// method의 괄호도 생략가능

Classes / Objects

class Person{
	def name, age, gender
    static group = "School"
    
    static void printGroup(){
     	println group
    }
}  // 생성자 및 setter/getter가 기본 제공되고, override 가능함 (다양한 기본 method가 제공 됨)

p = new Person(name: "Linus", age: 11, gender: "male")		// default 생성자 존재
println p.name + " " + p.age + " " + p.gender
Person.printGroup()
profile
Backend Developer

0개의 댓글