이번 시간에는 코틀린의 조건문과 표현식에 대해 다뤄보겠습니다.
if
if. 만약이라는 뜻이죠?
어떤 조건에 따라 프로그램을 수행하고 싶을 때 사용하는 키워드입니다.
val a = 3
if(a == 3) {
println("YES. a is 3")
}
// 출력
YES. a is 3
if문은 if(조건) { (몸통) }과 같이 사용할 수 있으며,
if 바로 뒤에오는 조건이 true이면 if문의 중괄호 내 코드를 실행합니다.
val a = 3
if (a == 3)
println("YES. a is 3")
// 출력
YES. a is 3
조건문 블록 내 코드가 한 줄일 경우, 중괄호는 생략하여도 됩니다.
if문 다중 조건 비교
val a = 3
val b = 4
if(a == 3 || b == 4) {
// 조건 중 하나라도 맞으면 전체 참
println("First Print")
}
if(a == 3 && b == 4) {
// 조건 중 하나라도 거짓이라면 거짓 (= 모두 참이라면 참)
println("Second Print")
}
// 출력
>> First Print
if문의 조건식 내 다중 조건을 넣고 싶을 땐, ||와 &&을 사용할 수 있습니다.
||는 or 역할을 하는 연산자입니다.
a || b 와 같이 사용하였을 경우, a와 b 중 둘 중 하나라도 true면 전체가 참(true)가 됩니다. 참트루네요.
&&는 and 역할을 하는 연산자입니다.
a && b와 같이 사용하였을 경우, a와 b 모두가 true여야 전체가 true가 됩니다.
조건 중 하나라도 거짓(false)면 전체가 false가 됩니다.
if - else
val a = 3
if(a == 4) {
println("a is 3")
}
else {
println("a is not 3")
}
// 출력
a is not 3
else 문은 if문 내 조건이 참이 아니라면(=false라면) else 문 내 코드를 실행시킵니다.
if - else if
val a = 3
if(a == 2) {
println("a is 2")
} else if (a == 3) {
println("a is 3")
} else {
println("a is ....?")
}
// 출력
a is 3
else if문은 if문 내 조건이 false일 때, 부수적인 조건을 달 때 사용됩니다.
위 코드에서 a가 3이기 때문에,
else if문으로 내려와 else if문의 조건을 검사한 후, true일 경우 else if 문 내 코드를 수행합니다.
아니라면, 하위 else if 문 혹은 else 문으로 내려갑니다.
when
val a = 3
when(a) {
1 -> print("a is 1") // a가 1일 경우
2 -> print("a is 2") // a가 2일 경우
3 -> print("a is 3") // a가 3일 경우
else -> print("Umm....?") // 모든 조건에 해당하지 않는 값. switch의 default에 해당
}
//출력
a is 3
when은
when(a) {
1 -> ~~
2-> ~~
}
위와 같이 사용했을 때, a의 값에 따라
a가 1일 경우, a가 2일 경우 등 각각의 조건에 맞는 코드를 작성할 때 쓰입니다.
else는 모든 조건에 해당하지 않을 경우 실행시킬 코드 블록입니다. 생략하여도 무방합니다.
if - else if - else 문이 많아질 경우, when을 사용하면 가독성을 향상시킬 수 있습니다.
C, 자바의 switch에 대응되는 녀석인데, 사용법은 훨씬 깔끔하네요. break를 매 번 넣어줄 필요도 없고요.
val a = 3
when(a) {
1, 2, 3 -> print("a is 1? 2, 3!") // 여러 값 사용 가능
in 4 .. 10 -> print("a is 4 ~ 10") // 범위 연상자 가능
else -> print("Umm....?") // 모든 조건에 해당하지 않는 값. switch의 default에 해당
}
//출력
a is 1? 2, 3!
when은 위 코드와 같이 여러 값을 동시에 비교하는 것도 가능합니다.
범위 연산자 in을 넣어도 되죠.
표현식 (Expression)
코틀린의 조건문은 표현식 역할도 겸합니다.
표현식이란, 조건문에 의해 특정 값이 발생된다는 의미인데,
예시를 먼저 보는게 이해가 쉬울겁니다.
val a = 3
val b = if (a == 3) 1 else 2
print(b)
// 출력
>>> 1
위 코드는 변수 b에 a가 3이면 1, 아니라면 2를 대입하라는 의미입니다.
val a = 3
println(if (a == 3) "a is 3" else "a is not 3")
// 출력
a is 3
===============================================
fun test(a:Int) : String {
return if(a == 3) "A is 3"
else "A is not 3"
}
이는 print 문이나 다른 메소드의 매개변수를 넘겨줄때도 응용이 가능합니다.
아직 배우지 않았지만, 함수의 return 값에도 응용이 가능합니다.
값을 발생시킨다는 점에서, 사실 거의 모든 곳에 응용이 가능하지요.
val a = 3
val b = when(a) {
1 -> 11
2 -> 22
3 -> 33
else -> -1
}
print(b)
// 출력
33
이는 if문 뿐만 아니라 when을 사용해서도 가능합니다.
다만, 변수에는 무조건 값이 할당되어야 하기 때문에,
when을 표현식으로 사용했을 경우엔 무조건 else를 넣어줘야 합니다.
when과 표현식은 코틀린을 접하고 나서 가장 신기했던 것 중 하나였습니다.
사실 개인적으로 자바에선 if - else if를 쓰지, switch를 잘 사용하진 않았습니다. break 넣어주기도 귀찮고...
하지만 코틀린에서 when은 너무 편하게 쓰고 있어요.
표현식 역시 처음엔 어색했지만, 익숙해지면 정말... 진짜 엄청 편합니다.
한 번 쓰세요. 두 번 쓰세요.
'코틀린 파헤치기 > 1부. 코틀린 기초' 카테고리의 다른 글
[코파기 1부] 7. 코틀린과 배열 (Array) (0) | 2023.03.14 |
---|---|
[코파기 1부] 6. 코틀린과 null (.? !!. ?:) (0) | 2023.03.14 |
[코파기 1부] 4. 코틀린과 연산자 (0) | 2023.03.14 |
[코파기 1부] 3. 코틀린과 기본 입출력 (0) | 2023.03.14 |
[코파기 1부] 2. 코틀린과 자료형 (0) | 2023.03.14 |