kotlin - Control flow

IKNOW·2023년 10월 31일
0

kotlin study

목록 보기
4/5

Conditional expressions

kotlin은 조건문을 수행하기 위해 ifwhen을 제공한다.

IF

if를 사용하기 위해서 조건문은 parentheses ()안에 기재하고 true일 경우 수행할 action은 curly braces {}아에 기재한다.

val d: Ind
val check = true

if(check) {
	d = 1
    } else {
    d = 2
}
println(d)

kotlin에는 3항연산자 condition ? then : else제공하지 않는다. 대신 비슷하게 {}를 사용하지 않는if문으로 구현할 수 있다.

val a = 1
val b = 2
println(if(a>b) a else b)

when

다양한 분기가 있는 조건식을 사용할 때는 when문을 사용한다. when은 statement(선언문?)로 사용하거나 표현식으로 사용할 수 있다.
조건식은 ()안에, 수행할 작업은 {}안에 배치한다.
각 브랜치에서 ->를 사용하여 각 조건과 각 작업을 분리한다.

val obj = "Hello"
when (obj) {
	"1" -> println("One")
    "Hello" -> println("Greeting")
    else -> println("Unknown")
}

모든 브랜치 조건중 하나가 만족될때까지 모든 분기가 순차적으로 확인된다. 따라서 적합한 첫 번째 브랜치만 수행된다.

//when문을 표현식으로 사용하는 방법
val obj = "Hello"
val result = when (obj) {
  	"1" -> "One"
    "Hello" -> "Greeting"
    else -> "Unknown"
}
println(result)

when이 표현식으로 사용되는 경우, 컴파일러가 모든 경우를 감지할 수 없다면 else 브랜치는 필수적이다.

when은 boolean 표현식의 체인 확인하는데에도 유용하다.

val temp = 18
val description = when {
	temp < 0 -> "very cold"
    temp < 10 -> "a bit cold"
    temp < 20 -> "warm"
    else -> "hot"
}

Ranges

kotlin에서 범위를 만드는 가장 일반적인 방법은 ..연산자를 사용하는 것이다.
마지막 값을 포함하지 않는 범위를 선언하기 위해서 ..<연산자를 사용한다.
역순의 범위를 선언하기 위해서 downTo를 사용한다.
범위의 스텝을 선언해주기 위해 step을 사용한다.

Loops

프로그래밍에서 일반적인 두개의 반복구조는 forwhile이다.
일정한 범위를 반복하기 위해서는 for를 사용하고 특정한 조건을 만족하는 동안 반복하기 위해서는 while을 사용한다.

for 내가 수행하는 횟수를 알고 있을때, while은 수행하는 횟수를 모르는 경우 사용한다고 생각하면 이해하기 쉽다.

For

for (number in 1..5) {
	println(number)
}

//Collection can also be iterated over by loops
val cakes = listOf("carrot", "cheese", "chocolate")
for (cake in cakes) {
	println("yummy, it's a $cake cake!")
}

While

while은 두가지 방법으로 사용할 수 있다.

  • 조건문이 true동안 반복해서 code block을 수행한다.
  • 먼저 code block을 수행하고 조건문이 true인 동안 반복한다.
//1
var cakesEaten = 0
while (cakesEaten < 3) {
	println("Eat a cake")
    cakesEaten++
}

//2
var cakesEaten = 0
var cakesBaked = 0
while (cakesEaten < 3) {
	println("Eat a cake")
    cakesEaten++
}
do {
	println("Bake a cake")
    cakesBaked++
} while (cakesBaked < cakesEaten)
profile
조금씩,하지만,자주

0개의 댓글

관련 채용 정보