본문 바로가기

Student/모여서 각자 코딩

19년도 여름방학 모각코 8일차 회고 0719

목표

코틀린 공부하기.

 

getter와 setter

  • getter와 setter를 배제했다. 그냥 쓰지 말라고 IntelIiJ의 코드 제너레이트(Alt+Insert)에서 빼버렸다. 물론 쓰려면 당연히 쓸 수 있는데, 구글은 자바에서도 메모리와 속도 면에서 저 둘을 쓰지 말고 그냥 변수를 public으로 하라고 권장해 왔다.

  • 클래스의 getters, setters, equals(), hashCode(), toString()과 copy()를 한 줄로 선언할 수 있다! 변수(var) 및 상수(val)로 지정된 생성자 패러미터는 클래스의 멤버 변수/상수로 동작한다.

data class Customer(var name: String, var email: String, var company: String)

  • 람다 식을 지원한다.

  • 싱글톤 방식의 객체를 object로 만들 수 있다.

object ThisIsASingleton { val companyName: String = "JetBrains" }

  • in과 Range문이 있다.

if (i in 1..10) { // equivalent of 1 println(i) }

  • for문에도 쓸 수 있다!

for (i in 0..12 step 3) print("$i ") // 0 3 6 9 12 출력 for (i in 12 downTo 0 step 2) print("$i ") // 12 10 8 6 4 2 0 출력

  • switch/case가 when ->으로 대체되었다. 위의 in과 Range도 쓸 수 있다.

when (x) { 0, 1 -> print("boolean") 2 -> print("콩\n콩") !in 1..9 step 2 -> print("홀수 아님") in 0..9 -> print("한자릿수") else -> print("otherwise") }

  • is 연산자가 있다. 타입 체크, 자동 형변환 등이 가능하다.

npcContainer.forEach { npc -> if (npc is Visible) npc.drawBody(gc, g) // npc가 Visible형으로 자동 변환되었다. if (npc is Glowing) npc.drawGlow(gc, g) // npc가 Glowing형으로 자동 변환되었다. }

  • when문에도 쓸 수 있다.

when (expr) { is Num -> expr.value // expr이 Num형으로 자동 변환되었다. is Sum -> eval(expr.left) + eval(expr.right) // expr이 Sum형으로 자동 변환되었다. else -> throw IllegalArgumentException("") }