코틀린
Do it! 코틀린 프로그래밍, 04-3 흐름의 중단과 반환
조요피
2021. 8. 26. 22:31
흐름 제어문
- return : 함수에서 결괏값을 반환하거나 지정된 라벨로 이동
- break: for문이나 while문의 조건식에 상관없이 반복문을 끝낸다.
- continue: for문이나 while문의 본문을 모두 수행하지 않고 다시 조건식으로 넘어간다.
예외 처리문
- try {} catch {} finally {}
람다식에서 return 사용하기
람다식에서 return은 라벨 표기와 함께 사용해야하고 break와 continue는 아직 지원되지 않음
fun main() {
demo()
}
inline fun inline(a: Int, b: Int, out: (Int, Int) -> Unit) {
out(a,b)
}
fun demo(){
println("start")
inline(13, 3) { a, b ->
val result = a + b
if(result > 10) return // demo 함수 종료
println(result)
}
println("end")
}
/* 출력 */
// start
// 라벨과 함께 return 사용하기
fun main() {
demo()
}
fun noInline(a: Int, b: Int, out: (Int, Int) -> Unit) { // inline 제거
out(a,b)
}
fun demo(){
println("start")
noInline(13, 3) lit@{ a, b ->
val result = a + b
if(result > 10) return@lit
println(result)
} // return@lit, 이곳으로 return
println("end") // 실행됨
}
/* 출력 */
//start
//end
// 암묵적 라벨
// 명시적으로 선언하지 않아도 함수이름을 그대로 사용하여 암묵적으로 라벨 사용가능
fun demo(){
println("start")
noInline(13, 3) { a, b ->
val result = a + b
if(result > 10) return@noInline
println(result)
} // return@lit, 이곳으로 return
println("end") // 실행됨
}
// 익명 함수를 사용하여 반환
fun demo(){
println("start")
func1(13, 3, fun (a, b){
val result = a + b
if(result > 10) return
println(result)
})
println("end") // 실행됨
}
람다식과 익명 함수를 할당할 때 주의할 점
fun hi() = { println("Hi") }
hi() // 아무것도 출력안됨
hi()() // Hi 출력
// 함수가 할당되는 것을 명시적으로 표현하려면 익명함수를 쓰는 것이 더 좋다
fun hi() = fun() { println("Hi") }
break와 continue에 라벨 함께 사용하기
fun main() {
demo()
}
fun demo(){
println("start")
first@ for(i in 1..5){
second@ for(j in 1..5) {
if(j == 3) break@first // continue@first 가능
println("$i $j")
}
}
println("end")
}
//start
//1 1
//1 2
//end