Packages
소스 파일은 패키지 선언으로 시작된다.
만약 패키지를 선언하지 않는다면 기본 패키지에 포함된다.
모든 컨텐트는 패키지에 포함된다.
다른 파일이나 소스에서 호출을 하려면 패키지를 import 해야 한다.
기본 패키기
기본으로 import가 되는 package가 있다.
JVM에서 실행을 한다면 java.lang.*나 kotlin.jvm.* 등이 자동으로 import 된다.
Return and Jumps
3개지 jump표현식이 있다.
- return: 함수나 익명 함수에서 반환
- break: 루프를 종료
- continue: 루프의 다음 단계로 진행
kotiln에서는 label로 break and continue가 가능하다.
label@, abc@, fooBak@등과 같이 레이블을 달아 그 부분으로 분기가 가능하다.
loop@ for (i in 1..10){
println("--- i: $i ---")
for(j in 1..10){
println("j: $j")
if(i + j > 12){
break@loop
}
}
}
함수가 중첩되어 있다면 jump를 유의해서 봐야 한다.
람다식에서는 return을 하면 상위 함수를 종료해버리기 때문에 label을 이용해야 한다.
fun foo3(){
var ints = listOf(0, 1, 2, 3)
ints.forEach label@{
if(it == 1) return@label
print(it)
}
print("end")
}
label의 사용이 불편하다면 암시적 레이블을 이용하자.
람다식에서만 return 하는 경우 label을 이용하여 return 해야 하지만 직접 label을 사용하지 않고 람다식 자체가 레이블이 될 수 있다.
fun foo3(){
var ints = listOf(0, 1, 2, 3)
ints.forEach {
if(it == 1) return@forEach
print(it)
}
print("end")
}
레이블을 사용해도 뒤에 반환값을 적으면 반환이 가능하다.