if 조건문
fun main() {
var number = 5
if(number > 10) {
println("10 보다 크다")
} else {
println("10 보다 작다")
}
}
if ( 조건 ) {
// 저건이 true 일 경우 실행할 구문 영역
}
else {
// 조건이 false 일 경우 실행할 구문 영역
}
실행할 구문이 여러개가 될 수도 있기 때문에 각각의 영역을 구분하여 실행하기 위해,
중괄호( {} ) 를 사용하여 실행할 영역을 구분합니다.
함수의 영역표시에 사용되는 중괄호와 동일한 특성을 지닙니다.
여기에서 true 일 경우에만 실행할 내용이 있고 조건이 false 일 경우 수행할 내용이 없다면,
esle 구문은 생략 가능 하빈다.
fun main() {
var number = 5
if(number > 10) {
println("한개 먹는다")
}
}
비교 연산자(comparison operatiors)
if 같은 조건문에 주로 사용되는 연산자 입니다.
비교연산자의 결과는 boolean 타입으로 if 조건 절에서 바로 사용 될 수 있습니다.
연산자 | 예제 | |
== | a == b | a 와 b가 같다면 true 다르면 false |
!= | a != b | a 와 비가 다르다면 true 같으면 false |
> | a > b | a 가 b 보다 크다면 true a 가 b 와 같거나 작다면 false |
>= | a >= b | a 가 b 보다 크거나 같다면 true a 가 b 보다 작다면 false |
< | a < b | a 가 b 보다 작다면 true a 가 b 와 같거나 크다면 false |
<= | a <= b | a 가 b 보다 작거나 같다면 true a 가 b 보다 크다면 false |
when 구문
다른 언어에서 사용되던 switch case 와 비슷합니다.
형식자체도 switch case 구문과 큰 차이가 없습니다.
when(변수) {
변수Case1 -> {
실행구문
}
변수Case2 -> {
실행구문
}
변수Case3 -> {
실행구문
}
else -> {
}
}
구문을 설명하면 when(변수) 변수가 어떤 값인지 에 따라서,
아래 구문중 처음 만나는 구문중 해당되는 구문의 실행영역을 수행하게 됩니다.
설명이 좀 어려운데 코드를 보시면 좀더 이해가 편하실 것 같네요
fun main() {
var number = 5
when(number){
5 -> {
println("number is 5!")
}
6 -> {
println("number is 6!")
}
7 -> {
println("number is 7!")
}
else -> println("else")
}
}
간단한 when 구문입니다.
결과는 어떨까요? 당연히 "number is 5! 가 출력됩니다.
변수 number 가 5 일 경우 -> { 실행구문 } 을 실행하라는 뜻입니다.
여러 언어의 switch case 등을 다뤄 봤는데 이렇게 직관적인 경우는 못 봤네요
지금처럼 -> 이하 구문이 한줄인 경우 중괄호({}) 를 생략 할 수 있습니다.
fun main() {
var number = 5
when(number){
5 -> println("number is 5!")
6 -> println("number is 6!")
7 -> println("number is 7!")
else -> println("else")
}
}
여러 case 에 대한 동일한 수행
아래처럼 사용도 가능합니다.
수행해야할 내용이 동일한 경우 콤마로 구분하여 case 를 줄지어 준다면 같은 구문이 수행이 됩니다.
fun main() {
var number = 5
when(number){
1, 3, 5, 7, 9 -> println("홀수!")
2, 4, 6, 8 -> println("짝수!")
else -> println("이상함")
}
}
when 의 결과를 동작대신 값을 반환하는 표현식
fun main() {
var number = 5
var ret = when(number){
5 -> "number is 5!"
6 -> "number is 6!"
7 -> "number is 7!"
else -> "else"
}
println(ret)
}
fun main() {
var number = 5
println( when(number){
5 -> "number is 5!"
6 -> "number is 6!"
7 -> "number is 7!"
else -> "else"
} )
}
코드가 조금 복잡해 보이는데 복잡할 것 없습니다.
첫번째는 when 의 결과를 ret 에 저장하여 출력한 것이고,
두번째는 when 의 결과를 바로 출력해 본것 입니다.
해당 case 가 여러개 일 경우
아래의 경우에는 두번째 5 case 에서 warning 경고가 뜨지만 사용할 수는 있습니다.
이런 비슷한 경우도 많으니 참고만 하시라고 강제로 빌드 해 보도록 하겠습니다.
결과가 어떨지 한번 예상해 보세요
fun main() {
var number = 5
when(number){
5 -> println("number is 5!")
6 -> println("number is 6!")
7 -> println("number is 7!")
5 -> println("number is 555555!")
else -> println("else")
}
}
number is 555555! 는 출력이 되지 않았습니다.
warning이라 출력이 안된것이 아니라 case 중 제일 처음 true 인 경우에 대해서만,
수행이 된다는 점 꼭 기억 하시길 바랍니다.
이런 경우는 단순 타입에는 잘 없지만 타입이 복잡해지면 은근 case 구문 실수가 발생 할 수 있어요
그리고 지금은 변수추론에 의해 when 절의 변수가 Int 로 고정이 되어 case 로는 Int 로만 등록이 가능 합니다.
when 구문의 변수타입에 따라 case 로 사용 될 값은 아주 다양해 질 수 있습니다.
이부분에 대해서는 클래스 이후에서 다루도록 하겠습니다.
'Android 앱 > Kotlin Language' 카테고리의 다른 글
kotlin 코틀린 - class 클래스 (0) | 2020.03.02 |
---|---|
kotlin 코틀린 - 반복문 (0) | 2020.02.29 |
kotlin 코틀린 - 함수 function (0) | 2020.02.28 |
kotlin 코틀린 - 변수와 자료형 (0) | 2020.02.27 |
kotlin 첫프로젝트 - IntelliJ IDEA 프로젝트 만들기 (0) | 2020.02.27 |