코틀린(Kotlin)

코틀린(kotlin) : if, when, for, while 문의 제어 흐름

알통몬_ 2018. 1. 26. 13:00
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 조건문과 반복문에 대해 공부합니다.

if 문

if 문은 표현 식입니다. 그렇게 때문에 값을 반환합니다.
조건에 대한 반환을 담담하기 때문에, 별도로 삼항 연산자는 없습니다.


fun main(args: Array<String>) {

var x = 10
var y = 20

// if 문만 사용할 때
var max = x
if(x < y) max = y


// if else 문
if ( x > y ) {
max = x
} else {
max = y
}

val max2 = if(x > y) x else y

}



위처럼 다양하게 사용 가능합니다.

그리고 마지막 표현 식은 아래처럼 중괄호 블록을 추가해서 만들 수 있습니다.


val max3 = if( x > y) {
println(x)
x
} else {
println(y)
y
}


when 문

when은 자바의 switch 문과 유사하다고 보시면 됩니다.


var a = 10

when(a) {
1 -> print("a == 1")
2 -> print("a == 2")
else -> {
print("a == 10")
}

}

자바의 switch 문과 어떤 차이가 있는지 보이시나요?

자바에서 'case 1:' 이렇게 표현했던 것이 '1->' 이렇게 바뀌었죠?

그리고 default: 대신에 else -> {} 으로 사용합니다.

아래처럼 다양한 방법이 존재합니다.


val a = 10
when (a) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}

val s = "10"
when (a) {
parseInt(s) -> print("s encodes a")
else -> print("s does not encode a")
}

val validNumbers = 20..100
when (a) {
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")
}

fun hasPrefix(x: Any) = when(x) {
is String -> x.startsWith("prefix")
else -> false
}

when {
a % 2 == 1 -> print("x is odd")
a % 2 == 0 -> print("x is even")
else -> print("x is funny")
}


for 문

자바의 foreach 문과 유사하면서 약간 다릅니다.


val intArr = arrayOf(1,2,3,4,5)
for(ia in intArr) print("$ia ")
println()
for(ia :Int in intArr) {
print("$ia ")
}

println()
for(idx in intArr.indices) {
print("${intArr[idx]} ")
}

println()
for((idx, value) in intArr.withIndex()) {
println("index = $idx and value = $value ")
}

for 문도 사용 방법이 다양합니다.

indices 는 index의 복수 형입니다.


while 문

while 문은 자바의 while 문과 사용 방법이 같습니다.


var x = 10

while (x > 0) {
x--
println(x)
}

var y = 5
do {
println(y)
y--
} while( y >= 0)


이상입니다.

조건문과 반복문에 대해 공부했습니다.

다음 포스팅에서는 return 과 jump에 대해 공부합니다.

반응형