[Kotlin Tutorial] Kotlin 기초 #2 - Chap2. Kotlin basics
참조 : Kotlin in Action
2.4. Iterating over things: "While" and "For" loops
-
Kotlin 에서 for loop 은 for-each loop 하나밖에 없다.
2.4.1. The “while” loop
-
Java 와 동일
2.4.2. Iterating over numbers: ranges and progressions
-
일반적인 for loop 를 쓰려면 range 를 쓰면 된다.
Range 는 closed, inclusive 하다 즉 아래의 예에서는 1과 10 모두를 포함한다.
val oneToTen = 1..10
-
val hundredToOneWithStep2 = 100 downTo 1 step 2
// 1..100 step -2 와 동일하다
-
Half closed range 를 만드려면 “until” 을 쓰면 된다.
0 until size // size 는 포함되지 않는다
// 0..size-1 과 동일하다
2.4.3. Iterating over maps
-
Character 로도 range 를 만들 수 있다.
‘A’..’F’
-
for ( (letter, binary) in binaryMap ){
// .. do something
}
Map 은 위와 같이 iteration 돌면 된다.
-
Map 의 key 접근은 literal 방법으로도 가능하다
binaryMap[character] = binary
// binaryMap.put(character, binary); 와 동일
-
List 류도 withIndex 함수를 통해 다음과 같이 iteration 돌릴 수 있다.
for ( (index, element) in list.withIndex() ){ // ( index, element ) 는 pair
// .. do something
}
2.4.4. Using “in” to check collection and range membership
-
in, !in 을 통해서 range 나 collection 에 내용물이 있는지 확인할 수 있다.
fun isLetter(c: Char) = c in ‘a’..’z’ || c in ‘A’..’Z’
fun isNotDigit(c: Char) = c !in ‘0’..’9’
-
Comparable interface 를 구현한 class 는 이 in, !in 을 사용하는 range 안에 들어갈 수 있다.
"Kotlin" in "Java".."Scala" // true
2.5. Exceptions in Kotlin
-
기본은 Java 와 동일하다.
throw 는 expression 이기 때문에 다음과 같이 쓸 수 있다.
val percentage =
If (number in 0..100)
number
else
throw IllegalArgumentException(“A percentage must be between 0 and 100 : $number”) // new 필요없음
2.5.1. “try”, “catch”, and “finally”
-
기본은 Java 와 동일.
Kotlin 에선 function 정의에 throws 문으로 check exception 을 만드는게 없다.
cf) 실제 exception 이 발생하는 케이스 (대표적으로 IOException) 이 거의 없기 떄문에 checked exception 으로 exception 을 강제하지 않는다.
그리고 필요한 경우, 즉 실제 exception 이 왕왕 발생할 수 있는 케이스에만 programmer 가 선택해서 catch 를 하면 된다는 것이다.
Java 의 checked exception 을 사용하는 함수를 호출하는 경우도 마찬가지로 catch 는 optional 이다.
catch 안 해도 compile 은 잘 된다.
-
Java7 의 try-with-resources 는 지원하지 않는다.
Library function 에 있다.
try (InputStream in = new FileInputStream(inFile); OutputStream out = new FileOutputStream(outFile)){
...
} catch(IOException ex){
}
// in, out 자동으로 종료됨
2.5.2. “try” as an expression
-
try 도 expression 이다. 단 curly brace 는 항상 필요하다
fun readNumber(reader: BufferedReader){
val number = try{
Integer.parseInt(reader.readLine())
} catch ( e: NumberFormatException ){
return
}
println(number)
}
2.6. Summary
-
fun keyword 는 function 설정에 사용된다. val 과 var 은 read-only 와 mutable variable 정의에 사용한다.
-
String template 은 지저분한 string 조합을 방지해준다.
$변수이름 혹은 ${ 변수 } 형태로 쓰면 된다.
-
Kotlin 에서는 Value object class ( 데이터만 가진 class ) 들을 쉽게 표현 가능하다.
-
if 는 return 값이 있는 expression 이다.
-
when 구문은 switch 와 비슷하지만 더 강력하다.
-
is 로 type check 를 하면 명시적으로 casting 할 필요가 없다.
Smart cast 가 알아서 해준다.
-
for, while, do-while loop 은 java 와 비슷하다.
그러나 for 문은 더 편리하다. 특히 map 을 iterate 하거나, collection 을 index 와 함께 iterate 하기 좋다
-
1..5 와 같은 range 를 만드는 것이 간단하다.
그리고 range 를 사용하면 편리한 in, !in 을 사용할 수도 있다.
-
Exception handling 은 java 와 매우 유사하다.
단, Kotlin 은 exception 을 function 에 throw 표기할 필요가 없다.
'프로그래밍 놀이터 > Kotlin, Coroutine' 카테고리의 다른 글
[Kotlin Tutorial] 함수 정의하고 호출하기 #2 (0) | 2017.08.03 |
---|---|
[Kotlin Tutorial] 함수 정의하고 호출하기 #1 - Chap 3. Defining and calling functions (0) | 2017.08.03 |
[Kotlin Tutorial] Kotlin 기초 #1 - Chap2. Kotlin basics (0) | 2017.07.25 |
[android] Kotlin (코틀린) 이 뭐야? (0) | 2017.07.25 |
[Kotlin Tutorial] Kotlin 소개 - Kotlin : what and why (2) | 2017.07.12 |
댓글