이번 포스팅에서는 Kotline 의 기본 제어문(반복문/조건문) 사용법을 알아보도록 하겠습니다.
모든 언어들이 비슷하기 때문에 하나의 언어만 잘 알아두면 나머지 언어의 문법도 금방금방 익힐 수 있는 것 같습니다.
Kotline 의 제어문도 다른 언어들과 비슷 하지만, 함축적으로 사용되는 부분이 있어 다른 언어들과는 다르게 Kotline 의 문법을 모르면 잘 알아보기가 힘들게 되어 있는 부분도 있습니다.
익숙해 지면 다른 언어들보다 편할것이라는 생각도 드네요. ^^
1. If 문
Kotline 에서 if 문은 Expression 입니다. 즉, value 를 return 합니다. if 문 자체로 기존의 3항 연산자의 역할을 대체하기 때문에 더이상 삼항 연산자는 사용되지 않습니다. (조건 ? true : false)
기존 우리는 if 문을 아래와 같이 사용했습니다.
max 에 a 변수를 넣고, 만약 a 보다 b 가 크다면 max 변수에 b 의 값을 넣는 코드입니다.
// Traditional usage
var max = a
if (a < b) max = b
// With else
var max: Int
if (a > b) {
max = a
} else {
max = b
}
Kotline 에서는 위의 if 문을 아래와 같이 간단하게 사용할 수 있습니다.
// As expression
val max = if (a > b) a else b
즉, " if (a>b) a else b " 구문 자체가 a 혹은 b 의 값을 return 하기 때문에, max 변수에 바로 이 값을 대입할 수 있습니다.
만약, if 문 자체에 블럭이 포함되어야 한다면 위 구문은 아래와 같이 사용할 수 있습니다.
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
위의 경우 블럭의 끝에 쓰여진 값이 return 되는 값이 됩니다.
2. When
When 은 일반 언어에서 사용되던 Switch 문을 대체합니다.
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
When 옆에 쓰여진 x 에 값이, 블럭 안의 조건에 충족이 될 때 까지 모든 인수를 순차적으로 검사 합니다.
아무 조건에도 충족되지 않으면 else 분기문으로 들어가게 되고, Switch 문의 default 문은 필수가 아니지만, When 의 else 문은 필수로 들어가야 합니다.
많은 경우가 동일한 방식으로 처리되어야 하는 경우에는 . (콤마) 를 사용하여 조건을 추가할 수 있습니다.
when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}
각 조건의 경우에는 위와 같이 특정 상수 값 (0, 1) 이 올 수도 있지만, 함수가 올 수도 있습니다.
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
위의 경우에는 x 와 parseInt() 에서 return 되는 값과 일치하게 되면 "s encodes x" 를 출력할 것입니다.
그리고 in 키워드를 사용하여 특정 값의 범위를 지정 할 수도 있습니다.
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
in 1..10 은 1<= x <=10 의 범위를 의미 합니다. Range 에 대해서는 'https://kotlinlang.org/docs/reference/ranges.html' 를 참고해 보세요 .
마지막으로 when 을 사용할 때 인수를 생략할 수 있습니다.
인수를 생략하게 되면 분기 조건은 단순히 bool 식이 되고, 해당 조건이 참일 때 분기문이 실행 됩니다.
아래의 경우에서는 x 가 홀수 일 경우 "x is odd", 짝수일 경우 'x is even" 둘다 아닐 경우에 "x is funny" 가 출력 됩니다.
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}
3. For Loops
for loop 는 비교적 기존에 사용하던 for 문과 크게 다르지 않습니다. iterator 를 제공하는 모든 것들을 반복할 수 있습니다.
아래 예제에서는 item 에 collection 에 있는 모든 값들이 하나씩 대입이 되면서 반복 하게 됩니다.
for (item in collection) print(item)
배열이나 리스트를 반복할 경우에 index 를 사용하고 싶다면 indices를 사용 합니다.
for (i in array.indices) {
print(array[i])
}
혹은 withIndex' fun 을 사용해서 index 와 value 를 return 받아 for문을 돌릴 수도 있습니다.
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}
4. While Loops
while 문과 do.. while 문은 java 와 완전히 동일합니다.
아래의 예제에서 do 블록 안에 정의한 멤버변수 y 는 while 의 조건 식에서 참조할 수 있습니다.
while (x > 0) {
x--
}
do {
val y = retrieveData()
} while (y != null) // y is visible here!
여기까지 Kotline 의 if, when, for, while 제어문 사용법에 대해 간단히 알아보았습니다.
기본 문법이기 때문에 잘 익혀두면 Kotline 으로 코딩하는데 많은 도움이 될 것입니다.
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] Range 사용하기 (0) | 2018.01.25 |
---|---|
[Kotlin] 함수 사용하기 (0) | 2017.12.28 |
[Kotlin] Class 두번째 이야기 (0) | 2017.12.22 |
[Kotlin] Class 사용하기 (0) | 2017.12.15 |
안드로이드 공식 개발언어 Kotlin (0) | 2017.12.01 |