728x90
- 변수
- val - 변경 불가능한 (immutable) 참조를 저장하는 변수
- var - 변경 가능한 (mutable) 참조
- 스마트 캐스트 (Smart cast)
- 컴파일러가 캐스팅을 해준다.
- is로 검사를 하고 나면 캐스팅하지 않아도 그 변수가 원하는 타입으로 선언된 것처럼 사용한다.
- 프로퍼티에 대한 스마트 캐스트를 사용한다면 그 프로퍼티는 반드시 val 이어야 한다.
- 커스텀 접근자를 사용한 것이어도 안 된다.
- 명시적 캐스팅
- as 키워드를 사용한다.
val n = e as Num
- (1 + 2) + 4
- Expr 인터페이스를 이용한 계산식
>>> println (eval(Sum(Sum(Num(1), Num(2)), Num (4))))
// 자바식 if 연쇄
fun eval(e: Expr): Int {
if(e is Num) {
val n = e as Num
return n.value
}
if(e is Sum) {
return eval(e.right) + eval(e.left)
}
throw IllegalArgumentException("Unknown expression")
}
// 코틀린식 when 사용
fun eval(e: Expr): Int =
when (e) {
is Num ->
e.value
is Sum ->
eval(e.right) + eval(e.left)
else ->
throw IllegalArgumentException("Unknown expression")
}
- for
- for <아이템> is <원소들> 형태만 존재
// 1부터 100까지
for (i in 1..100) {
...
}
// 역순으로 2씩
for (i in 100 downTo 1 step 2) {
...
}
- in, !in
- in 연산자를 사용해 어떤 값이 범위에 속하는지 검사할 수 있다.
- !in 연산자를 사용해 범위에 속하지 않는지 검사할 수 있다.
// when에서 in 사용
fun recognize(c: Char) = when (c) {
in '0'..'9' -> "It's a digit!"
in 'a'..'z', in 'A'..'Z' -> "It's a letter!"
else -> "I don't know..."
}
- try, catch
- try 키워드는 if나 when과 마찬가지로 식이다.
// try 식으로 사용, catch에서 값 반환
fun readNumber(reader: BufferedReader) {
val number = try {
Integer.parseInt(reader.readLine())
} catch (e: NumberFormatException) {
null
}
println(number)
}
728x90
'개발 > Kotlin' 카테고리의 다른 글
람다로 프로그래밍 (0) | 2021.12.28 |
---|---|
클래스, 객체, 인터페이스 (2/2) (0) | 2021.12.27 |
클래스, 객체, 인터페이스 (1/2) (0) | 2021.12.24 |
함수 정의와 호출 (2/2) (0) | 2021.12.23 |
함수 정의와 호출 (1/2) (0) | 2021.12.23 |