이번 Control Flow는 Kotlin Document에 있는 예제들을 한글로 풀어서 설명 한 예제입니다 .
If Expression
In Kotlin, if is an expression, i.e. it returns a value. Therefore there is no ternary operator (condition ? then : else), because ordinary if works fine in this role.
코틀린에서의 if 는 표현식이다 , 값을 반환합니다 . 삼중연산자가 필요없습니다 왜냐하면 보통 if 가 역할 수행을 잘하기때문이다 . 라는 의미입니다 .
다음 예제를 보겠습니다 . 다음 예제는 if 문이 식으로 사용되는 경우 값을 반환한다, 또한 if 식의 경우 else를 동반해야한다
fun main(args: Array<String>) { var a : Int = 5; var b :Int = 6; val max1 = if ( a > b) a else b println(max1) val max = if (a>b) { println(""" Choose a """) }else { println(""" Choose B""") } println(max) } //출력결과 6 Choose B kotlin.Unit
다음 예제를 보면 kotlin.Unit를 볼수 있다 이유는 max변수에 값이 들어가야하는데 reuturn 해주는 값이 없기 떄문입니다 .
그렇다면 if 와 else 분기에 return a 와 return b 를 쓰면 해결될거 같지만 정답은 그냥 a 와 b 를 써주면 됩니다
이유는 블로그이 마지막 구분이 반환값이 되기 때문입니다 . 따라서 완성된 소스는 아래와 같습니다 .
fun main(args: Array<String>) { var a : Int = 5; var b :Int = 6; val max1 = if ( a > b) a else b; println(max1); val max = if (a>b) { println(""" Choose a """); a; }else { println(""" Choose B"""); b; } println(max) }
When
fun main(args: Array<String>) { val x : Int = 3; when (x) { 1 -> println("x == 1"); 2 -> println("x == 2"); 3 -> println("x == 3") is Int -> println("정수입니다 ") else -> { println("숫자가 아닙니다!") } } }
when 문은 switch문과 유사합니다 .
when 은 각각의 조건이 만족할때까지 위에서부터 순차적으로 아래로 비교합니다 .
when 이 식으로 사용된경우 조건을 만족하는 값이 식의 결과값이 된다 .
when 이 식으로 사용된경우에는 else가 필수이다. ( 모두 만족하지 않을경우 돌려줘야하는 기본 값이 필요하기 때문 )
when 이 식으로 사용된경우 컴파일러가 else문이 없어도 된다고 입증할 수 있다면 else 생략 가능
fun main(args: Array<String>) { val myScore = 90; val hak = when(myScore) { in 90 .. 100 -> "A" in 80 until 90 -> "B" in 70 until 80 -> "C" else -> "F" } println(hak) val check = true; when (check) { true -> "정답"; false -> "오답"; } }
위의 소스는 myScore에 대한 학점을 출력하고 , check값에 대한 값을 보여주는 when 에 대한 예제입니다 .
첫번째 myScore같은 경우는 else가 없으면 에러가 나지만 2번쨰 when같은 경우는 else문이 없어도 된다는 판단으로 else가 없어도 에러가 나지 않는다 .
※직접적으로 언급하지 않았지만 when에서 in 과 .. or in until을 통해 범위지정이 가능하다 .
.. 은 우측의 값을 포함하지만 until은 우측의 값을 포함하지 않는다 .
또한 여러개의 값을 넣어서 하나의 실행만 하고싶을때는 true , false 와 같이 콤마(,)로 구분지어서 사용하면됩니다.
혹여나 타입을 확인하고 싶다면 is , !is 를 사용하면 된다 ex) is Int 와 같은 방법으로 사용 가능.
For Loops
fun main(args: Array<String>) { val items : Array<String> = arrayOf<String>( "바나나" , "사과" , "포도" , "키위"); for (item in items){ println(item)} // index 를 이용하고 싶다면 for (i in items.indices){ println("${i} : ${items[i]}")} // index와 value둘다 사용하고 싶다면 for ((index , item) in items.withIndex()) { println("${index} : ${item}" )} }
for 문은 코드로 보는게 빠를것 같습니다 .
'Kotlin' 카테고리의 다른 글
[Kotlin] Data Classes (0) | 2019.06.19 |
---|---|
[Kotlin] 상속 (0) | 2019.06.19 |
[Kotlin] class 의 활용 및 개념 (0) | 2019.06.19 |
[Kotlin] Package , Return and Jumps (0) | 2019.06.19 |
[Kotlin] 코틀린의 기본 타입 ( Java와의 비교 ) (0) | 2019.06.19 |
댓글