본문
170619(월) - Kotlin docs (Control Flow)
Kotlin docs
Control Flow
If Expression
- kotlin의 if는 value를 리턴한다.
- ternary operator는 없다.
// Traditional
var max = a
if (a < b) max = b
// With else
var max: Int
if (a > b) {
max = a
} else {
max b
}
// As
val max = if (a > b) a else b
- block을 씌우면 마지막 expression이 block의 value가 된다.
val max = if (a > b) {
print("choose a")
a
} else {
print("choose b")
b
}
- statement이 아닌 expression(ex : return value, assigning to variable) 이면 반드시 else문이 있어야 한다.
When Expression
- when은 C와 비슷한 operator인 switch를 대체
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> {
print("x is neither 1 nor 2)
}
}
- expression으로 사용되면 value는 satisfied된 branch가 전체 expression의 value가 된다.
- statement로 사용되면 개별적인 branch의 값은 무시
- if 문과 마찬가지로 block을 가질 수 있고, 각 block의 마지막 값이 return 값이다.
- expression으로 사용되면 else가 필수이다.
when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}
- arbitrary expression 사용가능
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
- use range or collection
when (x) {
in 1..10 -> print("x is in the range")
in validNumers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
- check the type (use smartcast)
fun hasPrefix (x: Any) {
in String -> x.startsWith("prefix")
else -> false
}
- if-else chain replacement
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}
For Loops
- Anything provides an Iterator
for (item in collection) print(item)
- can be block
for (item: Int in ints) {
//...
}
- use index
for (i in array.indices) {
print(array[i])
}
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}
While Loops
while (x > 0) {
x--
}
do {
val y = retrieveData()
} while (y != null)
Break and continue in loops
kotlin supports traditional break and continue operators in loops
'Mobile > Kotlin' 카테고리의 다른 글
170818(금) - Kotlin docs (Classes and Inheritance) (0) | 2017.08.18 |
---|---|
170621(수) - Kotlin docs (Return and Jumps) (0) | 2017.06.21 |
170614(수) - Kotlin docs (Packages) (0) | 2017.06.14 |
170607(수) - Kotlin docs (Basic Types) (0) | 2017.05.31 |
170530(화) - Kotlin docs(Coding Conventions) (0) | 2017.05.30 |
댓글