본문 바로가기

안드로이드 Android

안드로이드 개발 (38) Kotlin In Action 정리 - 2

이전의 순서 1편에서 2편까지 모두 한꺼번에 정리하였었으나, 포스팅 글 제목으로 인해서 2라고 표시된 순서가 3장을 요약하는 글이 되버려서 인식하기에 불편하다는 생각이 들었습니다. 그래서 1편에서 2장을 분리하여 글제목과 요약 장이 일치하도록 재작성 되었습니다.

 

(이전 편 다시보기) 

 

안드로이드 개발 (37) Kotlin In Action 정리 - 1

현업에서 일을 하다보면, Back To The Basic 을 통하여 디버깅 추적 및 안전한 코드 작성 능력을 강화 할 수 있다는 것을 알게 됩니다. 이 글은 J brains 에서 일하는 Dmitry Jemerov, Kotlin 개발팀의 일원인 Sv

gift123.tistory.com

 

2장 - 코틀린 기초

 

2장에서 다루는 내용은 다음과 같다.

2장은 기본적인 내용은 어느정도 스킵하고 복습할만하다고 생각 되는 부분만 적었습니다.

 

- 함수, 변수, 클래스, enum, 프로퍼티 선언하는 방법

- 제어 구조

- 스마트 캐스트 

- 예외 던지기와 예외 잡기 

 

- when, if, try  조건문 대부분 Expression 으로 되어있어서 값을 return할 수 있다. (Java는 Statement라서 반대)

*Loner 생각:  상황에 따라 코드가 간결해질 수 있고, Side effect를 방지할 수 있도록 도움 줄 수 있습니다."

//조건문을 통해서 값을 return 한다.
fun main() {
    val result = when (0) {
        1 -> "1"
        2 -> "2"
        else -> "0"
    }
    println(result)
}

 

- 반면 대입문은 Java에서는 Expression 이나, Kotlin에서는 Statement 로 되어 있어서 대입식과 비교식을 잘못 바꿔 써서 버그가 생기는 경우가 드뭅니다.

*Loner 생각: 즉 when,if,try는 expression , = 는 Statement 입니다. Java 같은 경우는 정반대로 되어 있습니다."

 

- koltin에서 if문의 3항 연산자를 지원하지 않는 이유는 expression라서 따로 지원하지 않습니다.  

( kotlin의 if( a>b) b else a 이 a>b ? a:b 처럼 작동 한다.)

 

- 긴 함수의 return문이 여럿 들어있는 경우를 생각(어떤 값을 return하는지 모두 명시하기 위해) 해서 식이 본문인 함수의 반환 타입만 생략이 가능합니다.

 

- val은 value에서 따왔고, var는 variable에서 따온 축약어 입니다. 

 

-한글을 사용한 String 의 경우 상황에따라 unresolved reference 오류가 일어 날 수 있다. 그래서 한글은 ${} 써야하는 경우가 종종 있습니다.

 

- 기본 이름 규칙에 따라 is로 시작하는 변수명의 property 는 기본적으로 getter, setter 도 is로 시작하는 이름이 됩니다.

 

- Kotlin 에서 Smart Casting은 is 로 이루어지는데, 컴파일러에서 캐스팅을 해줍니다. 

- map collection을 Iteration 해서 쓸 수 있습니다다.

- 범위 비교는 in, !in 을 사용할 수 있습니다.

*Loner 생각: value in 1..5 와 같은 범위 수열 비교는 한눈에 보기에도 좋습니다. 매우 가독성이 좋다 생각합니다."

 

- Kotlin은 unchecked와 check Exception을 구분하지 않는다.

- Kotlin의 for문에서 down to 와 같이 다양한 방식을 활용할 수 있습니다. 

*Loner 생각: 하지만 collection에 대한 공식 라이브러리 함수들이 너무 유용해서 kotlin을 오래 사용하다보면 for를 사용할일이 매우 드물게 되는것 같습니다. 또한 for는 st를 사용하다보면 사이드 이펙트를 일으키는 실수를 할 수 있기 때문입니다."

 

이상 Kotlin In Action 아주 짦은 2장 정리 였습니다.  사실 아는 내용이 중복적으로 있어서 많은 내용을 담지 않았습니다.