JaeUng
by JaeUng
1 min read

Categories

Kotlin 2일차

  • 코트린 자기주도학습 2일차

코틀린의 흐름제어

  1. if else
  2. when
  3. for loops
  4. while loops

if else ?

JAVA의 if else문과 거의 유사합니다.

	var max: Int
 if(a>b){
 	max = a
 }else{
 	max = b
 }

if문이 식으로 사용되는 경우 값 반환 필수

	val max = if(a>b) a else b

JAVA의 삼항 연산자를 생각하면 됩니다.

블록의 마지막 값이 이 식의 전체 값을 반환을 나타냅니다.

	val max = if(a>b){
		println("a가 더크다")
		a
	}else {
		println("b가 더 크거나 같다")
		b
	}

when ?

when문은 C계열 언어의 switch문을 대체합니다.

when문의 각각의 braches의 조건문이 만족할 때 까지 위에서 순차적으로 인자를 비교합니다.

when(x){
	1-> print("x는 1")
	2-> print("x는 2")
	else->{
		print("x는 3이상")
	}
}

when 문도 if처럼 식으로 사용 가능합니다.

var res = when(x){
	100->"A"
	90->"B"
	80->"C"
	else->"F"
}

when이 식으로 사용될 경우 else문이 필수입니다.

하지만, 컴파일러가 else문이 없다는 것을 알 수 있다면 else를 생략 가능합니다.

var res = when(x){
	true->"맞다"
	false->"틀리다"
}

when에서는 여러 조건들로 브랜치를 할 수 있다.

when(x){
	0,1 -> print("x는 0,1")
	else -> print("x는 2이상")
}

또한, bracnh의 조건문에 함수나 식을 사용 할 수 있습니다.

when(x){
	parseInt(x) -> print("함수사용")
}

컬렉션에도 사용이 가능한 when문, 자세히 알아두면 좋을 것 같습니다.

val validNumbers = listOf(3,6,9)
when(x){
	in validNumbers-> print(x)
	in 1..10 -> print("1~10")
	!in 10..20 -> print("10~20")
	else ->print("Not")
}

when으로 타입 검사 가능하고, 스마트 캐스트가 적용됩니다.

!is, is 키워드를 활용

for loops ?

collection.iterator()
for(i in array.indices){
	println("$i:${array[i]}")
}
//혹은
for((index,value) in array.withIndex){
	print("$index 와 $value")
}

while loops ?

JAVA와 동일하며 , Do while같은 경우 while문의 조건문에 while문 안의 지역변수로 조건을 걸 수 있습니다.