티스토리 뷰
728x90
조건문
- if 문
fun max(a: Int, b: Int) = if (a > b) a else b
자바의 삼항 연산자가 없는 대신 if 문을 식으로 사용할 수 있다.
2. when 문
if 문을 중첩하여 사용하기 보다 when 문을 통해 조건을 순차적으로 검사한다.
fun hexDigit(n: Int): Char {
when {
n in 0..9 -> return '0' + n
n in 10..15 -> return 'A' + n - 10
else -> return '?'
}
}
- 여러 개의 조건 -> 문, 하나의 else -> 문으로 이루어질 수 있다.
- 자바의 switch와 비슷하지만 값을 선택하는 것이 아닌 임의의 조건을 검사한다. (또한 자바의 폴스루를 지원하지 않음)
- 하나의 변수만을 비교한다면 when (변수명) {} 로 쓸 수 있다.
3. 범위, 진행
- .. 연산자
- 'a' .. 'h'
- 10 .. 99
- 0.0 .. 1.0
위의 연산처럼 범위를 만들 수 있다.
.. 연산자의 범위는 닫혀있기 대문에 시작 값과 끝 값이 범위에 포함된다.
(until → 끝 값보다 1 작은 값의 반만 닫힌 범위를 만드는 연산)
- in 연산
- num in 10..99
어떤 값이 범위 안에 들어있는지 알 수 있다.
(↔ !in)
- downTo 연산
- 10 downTo 1
아래로 내려가는 진행을 만들 수 있다.
- step
- 1 .. 10 step 3
- 15 downTo 8 step 2
진행의 간격을 지정할 수 있다.
루프
- for 루프
fun main() {
val a = IntArray(10) { it * it }
var sum = 0
for (x in a) {
sum += x
}
println("Sum: $sum")
}
- 변수 x는 이터레이션 변수에 해당하며 val이나 var을 붙이지 않는 불변 변수다.
- Iterable 인스턴스가 for 루프에 들어갈 수 있다. (배열, 리스트, 집합 → Iterable)
- 자바의 for 루프처럼 선언, 초기화, 검사의 구조가 없다.
- 문자열과 배열의 인덱스 범위를 제공하는 indices 프로퍼티를 사용
2. 꼬리 재귀 함수
함수에 tailrec 키워드를 붙이면 컴파일러가 재귀 함수를 비재귀적인 코드로 자동 변환해준다.
→ 재귀 함수의 간결함, 비재귀 함수의 성능.
tailrec 키워드는 재귀 호출 다음에 아무 동작도 수행하지 않는 꼬리 재귀인 경우에만 동작한다.
예외 처리
fun readInt(default: Int) = try {
readLine()!!.toInt()
} catch(e: NumberFormatException) {
default
}
- try 문을 식으로 표현할 수 있다. 식의 값은 try 블록의 값 or 예외를 처리한 catch 블록의 값이다.
- 자바와 다르게 하나의 catch 블록 안에서 여러 예외를 처리할 수 없다.
728x90
'kotlin' 카테고리의 다른 글
[kotlin/코틀린] 프로퍼티 (0) | 2023.06.22 |
---|---|
[kotlin/코틀린] 널 가능성 (0) | 2023.06.22 |
[kotlin/코틀린] 클래스 정의하기 (0) | 2023.06.22 |
[kotlin/코틀린] 기초 문법 (문자열, 배열, 함수) (0) | 2023.06.22 |
[kotlin/코틀린] 기초 문법 (변수, 타입) (0) | 2023.06.22 |