Kotlin - 조건문 및 반복문
Updated:
-
조건문 및 반복문
-
조건문
-
IF : 코틀린에서 if는 표현식으로 반환값을 가진다. 그렇기에 코틀린에는 삼항연산자가 존재하지 않음(보통 if가 삼항연산자의 역할을 잘 수행하기 때문, 또한 코틀린에서
?
는 NULL 관련하여 사용됨)//전통적인 사용법 var max = a if(a<b) max = b //else 와 함께 var max: Int if(a>b){ max = a }else{ max = b } //표현식으로 사용 var max = if(a>b) a else b
또한 if 표현식의 branch들은 여러문장을 가지는 불록으로 구성가능, 이 경우 마지막 표현식이 반환
(표현식으로 사용하는 경우<값 반환="" 혹은="" 변수="" 할당시=""> 반드시 else를 가져야함)값>
val max = if(a>b){ print("Choose a") a }else{ print("Choose b") b }
-
When : switch/case 문과 같은 역할을 한다. 대응하는 조건에 맞는 조건을 찾을 때 까지 순차적으로 맞춰보며 그렇지 않으면 else 에 걸리게 된다. 또한 조건은
,
로 결합해서 사용이 가능하다.//basic expression when(x){ 1 -> print("x = 1") 2 -> print("x = 2") else -> { print("x is neither 1 nor 2") } } // `,` usage when(x){ 0, 1 -> print("x = 0 or x =1") else -> print("otherwise") } //조건에 상수 뿐만 아니라 임의의 표현식도 사용 가능 when(x){ parseInt(s) -> print("s encodes s") else -> print("s does not encode x") } //범위와 어떤 collection에 포함 되는지 여부를 알 수 있다(in or !in) when(x){ 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") } //if - else if 대체 가능, 인수가 없으면 조건은 단순히 boolean 표현이며, 참일 경우에만 실행 when { x.isOdd() -> print("x is odd") y.isEven() -> print("y is even") else -> print("x+y is even.") } //kotlin 1.3 이후로는 다음과 같이 when의 subject를 변수로 capture 가능 //변수는 when 의 body에서만 사용이 가능하다. fun Request.getBody() = when (val response = executeRequest()) { is Success -> response.body is HttpError -> throw HttpException(response.status) }
- 특정 타입의 값이 있는지 확인이 가능하다 (
is
or!is
), smart casts (객체 유형의 검사를 한 후 블block내에서 자동으로 캐스팅 되는것, 명시적인 형변환 필요 X) 로 인해 별도의 점검 없이 타입의 메소드나 속성에 접근이 가능한 점에 유의
fun hasPrefix(x: Any) = when(x) { is String -> x.startsWith("prefix") else -> false }
- 특정 타입의 값이 있는지 확인이 가능하다 (
-
-
반복문
-
For : for loop 는 iterator가 제공하는 모든것을 반복, C#에서의
foreach
loop 와 동일for (item in collection) print(item) //body는 block으로 감쌀 수 있음 for (item : Int in ints){ ... }
-
멤버 또는 확장함수 iterator() 를 가지며 return type은 멤버 혹은 확장 함수인 next(), hasNext()를 가지며, hasNext()는
Boolean
을 return 함 -> 3가지 함수는 모두operator
로 표시해야함 -
숫자 범위 반복시 range expression을 사용
for (i in 1..3) { println(i) } for (i in 6 downTo 0 step 2) { println(i) } //for loop(범위 또는 배열 반복)는 iterator를 생성하지 않고 index를 기반으로 한 loop로 compile 됨, 인덱스를 통해 반복하려면 아래와 같이 사용 for(i in array.indices){ print(array[i] + " ") } //withIndex 라이브러리 함수 사용 가능, 인덱스와 값을 동시에 사용 가능 for ((index, value) in array.withIndex()) { println("the element at $index is $value") }
-
-
While : while과 do..while은 다른 언어들과 똑같이 동작
while (x > 0) { x-- } do { val y = retrieveData() } while (y != null) // y is visible here!
-
Break and continue in loops : Kotlin에서는 loop에서 전통적인 break과 continue operators를 지원함. Returns and jumps
-
-