Kotlin 에 대해 알아보자
함수
메인 함수
- 코틀린
main
함수는 아래와 같은 형태이다.
- 코틀린은 함수를 선언할때
fun
키워드를 사용한다.
- 자바와 다르게 파라미터이름이 먼저 오며, 타입은 그 뒤에 붙는다.
- 자바와 다르게 함수를 최상위 수준에 정의할 수 있다. (클레스 안에 넣지 않아도 됨)
- 줄 끝에
;
세미콜론을 붙이지 않아도 된다.
함수의 구조
코틀린의 if
는 식이다.
식(expressing) 과 문(statement) 의 차이
expresson
(식)은 값을 만들어 내며, 다른 식의 하위로 계산에 참여할 수 있다.
statement
(문)은 값을 만들어 내지 않으며, 블록의 최상위 요소로 존재한다.
- 위의
compareInt
함수에서 if 가 식이기 때문에 아래처럼 간결하게 함수를 표현할 수 있다.
-
처음 예제와 같이 본문이 중괄호 {}
로 둘러싸인 함수를 블록이 본문인 함수라 부르고, 등호와 식으로 이루어진 함수를 식이 본문인 함수 라 부른다.
-
식이 본문인 함수가 가능한 이유는 반환타입을 적지않아도 컴파일러가 함수 본문식을 분석해 타입을 함수 반환타입으로 정해준다. 이를 타입추론이라 한다.
변수
- 코틀린의 변수 선언은 타입을 명시하거나 생략해도 된다.
val, var
val
: 변경 불가능한 변수이다. 자바로 따지면 final
이다.
var
: 변경 가능한 변수이다.
- 되도록
val
로 선언하여 sideEffect
를 최소화하자.
- var 키워드를 사용하면 변수의 값을 변경할 수 있지만 타입은 변경이 불가능하다.
문자열 템플릿
- 자바에서
String.format(...)
을 코틀린에서는 쉽고 간단하게 사용 가능하다.
클래스
Getter Setter
- 자바와 다르게 코틀린에서는
getter
와 setter
를 따로 구현하지 않아도 된다.
- getter
- Setter 사용시 프로퍼티가 반드시
var
(Mutable)만 변경이 가능하다.
커스텀 접근자
- 아래와 같이 프로퍼티의
getter
혹은 setter
를 직접 작성 가능하다.
enum, when
enum
- 코틀린 enum 선언은 자바 enum 선언과 조금 다르다
Java
when 으로 enum 다루기
if
와 마찬가지로 when
도 식이다. 따라서 식이 본문인 함수에 바로 사용 가능하다.
- 형태는 자바의
switch
와 비슷하다. 하지만 자바와 다르게 각 조건마다 break
를 하지 않아도 된다.
- 여러 조건이 필요한 경우
,
로 구분하여 사용 가능하다.
- 인자 없이 사용하게되면 불필요한 객체 생성을 하지 않아 성능 향상에 도움이 된다.
스마트 캐스트
- 코틀린에서는 해당 타입의 검사와 동시에 캐스팅이 가능하다.
when
스마트 캐스트 시 블록을 사용할 수도 있다.
iteration: while, for loop
숫자 interation
- 숫자 iteration은 아래와 같이 간단하게 생성할 수 있다.
- 자바와 다르게 코틀린에서는
forEach
를 짧게 구현 가능하다. 개인적으로 매우 맘에 든다.
- 코틀린에서는
증가값
과 역순
에 대해서도 쉽게 구현가능하다.
20
18
16
14
12
10
8
6
4
2
Collection iteration
- map의 key, value 형태를 쉽게 사용할 수 있다.
- list를 iteration 할 때
index
를 쉽게 포함시킬 수 있다.