Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

if

코틀린에서 if는 표현식이다. 즉 값을 반환한다. 따라서 삼중 연산자(condition? thne: else)를 사용 할 필요가 없다.
// 일반적인 사용 
var max = a 
if (a < b) max = b

// else와 함께 사용 
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}
 
// 한 줄로 끝 
val max = if (a > b) a else b
if 블럭의 마지막 변수가 리턴 된다.
val a = 5
val b = 9

val max = if (a > b) {
    println("Choose a")
    a
} else {
    println("Choose b")
    b
}
println(max)

when

when은 C 계열 언어의 switch를 대신해서 사용 할 수 있다.
when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> { // Note the block
        print("x is neither 1 nor 2")
    }
}
when은 조건이 일치되는 브랜치를 찾을 때까지, 순차적으로 매개변수를 검사한다. 일치하는 브랜치가 없을 경우에는 else문을 실행한다. C 언어의 default와 같은 일을 한다. 모든 조건에 대한 검사가 불가능 할 경우 else 문을 반드시 써야 한다.

조건이 두 개 이상의 매개변수를 일치하는 경우가 있는데, 이때는 일치하는 조건을 함께 사용 할 수 있다.
when (x) {
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")
}
브랜치 실행 조건으로 (상수뿐만이 아니라)임의의 표현식을 사용 할 수도 있다.
when (x) {
    Integer.parseInt(s) -> print("s encodes x")
    else -> print("s does not encode 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")
}
is를 이용해서 값의 타입을 체크 할 수도 있다.
fun hasPrefix(x: Any) = when(x) {
    is String -> x.startWidth("prefix")
    else -> false
}
when은 if 문을 대체하기 위해서 사용 할 수도 있다. when에 매개변수가 없으면, 단순히 분기 조건의 참/거짓을 가지고 브랜치를 실행한다.
when {
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")
}

for

for 문은 조건을 만족 할 때까지 코드를 실행하기 위해서 사용한다.
for (item in collection) print (item)
블럭문을 가질 수도 있다.
for (item: Int in ints) {
    // ...
}
for 문은 iterates를 제공하는 요소들 즉, iterator(), next(), hasNext()를 가지는 함수들에 대해서 사용 할 수 있다. 인덱스를 가지는 배열은 아래와 같이 사용 할 수 있다.
for (i in array.indices) {
    print(array[i])
}
withIndex()를 사용 할 수도 있다.
val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50)
for((k, v) in numbers.withIndex()) {
    println("the element at $k is $v")
}

while

whiledo..while은 동일하게 사용 할 수 있다.
while ( x > 0 ) {
    x--
}

do {
    val y = retrieveData()
} while (y != null)