Kotlin 2일차
- 코트린 자기주도학습 2일차
코틀린의 흐름제어
- if else
- when
- for loops
- 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문 안의 지역변수로 조건을 걸 수 있습니다.
