본문 바로가기

IT/kotlin언어

[Kotlin] 코틀린 흐름제어 (if-else, .., for, while, do-while when)

 안녕하세요 YTS 입니다. 


흐름제어


 if-else 문


 코틀린에서 if-else 문은 자바의 if-else문과 비슷하게 쓰입니다. 다른점이 있다면 if-else 문을 이용하여 삼항 연산자를 만들 수 있는데요. 예제를 살펴볼까요?


class Ifelse {
val height: Int = 184
var heightRange: String = ""


fun whatHeightRange() {
if (height >= 170 && height < 180) {
heightRange = "170대"
} else if (height >= 180 && height < 190) {
heightRange = "180대"
} else if (height >= 190 && height < 200) {
heightRange = "190대"
}
}

//코틀린은 반환 또한 지원합니다.이 속성을 이용하여 삼항 연사자처럼 이용할 수 있습니다.
val weight: Int = 84
val weightRange: String = if (weight >= 60 && weight < 70) {
"60대"
} else if (weight >= 70 && weight < 80) {
"70대"
} else {
"...."
}
}


 범위 : .. 연산자


 범위 .. 연산자는 코틀린에만 있는 자료구조 입니다. 특정 범위를 나타낼때에 사용됩니다.


class range {
val height: Int = 184
var heightRange: String = ""


fun whatHeightRange() {
if (height in 170..179) {
heightRange = "170대"
} else if (height in 180..189) {
heightRange = "180대"
} else if (height in 190..199) {
heightRange = "190대"
}
}

}


 위에 if-else 문에 서 좀더 짧아지고 간결해지게 되었네요.


 for 문


 코틀린에서의 for문은 for-each형태만을 지원합니다. 그렇기 때문에 자바에 익숙하신분들 이라면 인덱스 접근은 어떻게 하지? 라고 바로 떠올릴 텐데요. 

 Collection.indicies 프로퍼티를 사용하면 인덱스를 추출할 수 있습니다.


class For {
val animals: List<String> = arrayListOf("사자", "호랑이", "코끼리", "원숭이", "치타")

fun Log() {
for (animal in animals) {
Log.d("animal", "animal = " + animal);
}

for (i in animals.indices) {
Log.d("animal", "animal = " + animals[i]);
}
}
}

 

 While, do-While 문


 코틀린에서의 While문과 do-while은 자바와 완전히 동일합니다.


class While {
var a: Int = 1
var b: Int = 20

fun whileFun() {
while (a < b) {
a += 4
b++
}

do {
a += 4
b++
} while (a < b)
}
}


 When 문


 when 문은 자바의 switch 문을 대체합니다.  기존의 switch 문은 break를 사용하여 절을 구분하지만 when은 {} 중괄호를 사용하여 절을 구분합니다.


class When {
val name: String = "YTS"

fun whenFun() {

when (name) {
"YTS" -> {
Log.d("name", "success")
}
else -> { //디폴트 대신 사용
Log.d("name", "default")
}
}
}
}