본문 바로가기

코틀린

[Kotlin In Action] 2장. 코틀린 기초

Kotlin in Action 책에서 각 챕터의 Summary를 보며 부족한 키워드만 후라닥 정리하는 글.
안드정이 코틀린 인 액션 책 스터디하면서 정리한 자료도 참고할 예정 땡큐땡큐 

 

함수와 변수

  • 함수를 정의할 때는 fun 키워드를 사용
  • 변수를 정의할 때 val 키워드는 불변(읽기 전용),  var 키워드는 가변을 나타냄
val name = "mazzi" // 타입 생략 가능
val name : String= "mazzi" // 타입 명시가능
val answer:Int // 초기화 식을 이용하지 않고 변수 선언시 타입 반드시 명시
answer = 24
  • 초기화 식 없으면 컴파일러가 타입 추론 불가능하기 때문에 반드시 타입 명시
  • var는 변수 값을 변경할 수 있지만, 그 타입은 바꿀 수 없음
  • 기본적으로 모든 변수를 val로 선언하고 필요한 경우만 var로 변경하라
  • 클래스 정의시 속성들은 기본적으로 가시성을 가짐

변수

변수에 대해서는 custom accessor를 설정할 수도 있다.
메서드를 사용해 반환할 수 있는데, 성능상으로는 차이가 없고 가독성만 다를 뿐이다.
일반적으로 클래스의 특성을 설명한다면 아래와 같이 선언하는 것이 좋다.

class Rectangle(val height: Int, val width: Int) {
  val isSquare: Boolean
    get() {
      return height == width
    }
}

 

문자열 템플릿

  • 노이즈가 많은 문자열 연결을 방지할 수 있음
  • 다음과 같이 변수 앞에 $를 붙이거나 식을 ${}로 둘러싸면 해당 값이 문자열에 주입됨
println("Hello, $name! ")
  • ${}로 변수를 둘러싸는 것이 좋음 (한글 변수 등을 고려하여)
  • 다음과 같이 복잡한 식도 가능
println("${if(args.size>0) "too short" else "normal string ${name}"}")

선택의 표현과 처리

if

  • 반환 값을 가진 표현식이 됨
if(a>b) a else b //  =java의 3항 연산자 a>b ? a:b

when

  • 코틀린에서 when은 자바의 switch보다 강력
  • 자바는 분기 조건에 상수만 사용 가능했지만, 코틀린은 객체도 허용한다.
fun mix(c1:Color,c2:Color){
	when(setOf(c1,c2)){ // when 식의 인자로 어떤 객체든 사용 가능
		setOf(RED,YELLOW) -> ORANGE
		setOf(YELLOW,BLUE) -> GREEN
		setOf(BLUE,VIOLET) -> INDIGO
		else->throw Exception("Dirty Color") // 배치되는 분기 조건이 없으면 예외
}

for

  • 코틀린에서는 for-each 루프 형태만 존재
for (i in 1..100) {
    print(fizzBuzz(i))
}

범위 : .. 연산자로 시작 값과 끝 값을 연결

예외 처리 

자바의 예외 처리와 매우 유사함