신규 블로그를 만들었습니다!
본 글은 Dmitry Jemerov, Svetlana Isakova의 "Kotlin in action" 책을 참고하여 작성한 글입니다.
코틀린에서 in을 이용해서 할 수 있는 것들이 굉장히 많습니다. 대표적으로 범위 안의 원소를 검사할 때 사용하기 편리합니다. 파이썬을 사용해본적이 있다면, 앞으로 나올 in에 대한 내용을 쉽게 이해할 수 있습니다. (굉장히 비슷합니다.)
들어가기전에 ".." 점 2개에 대해 알아야합니다.
0..9 는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9를 뜻합니다. 문자열에서도 이와같이 표현이 가능한데, 'a'..'z'는 'a', 'b', 'c', ... , 'z'를 뜻합니다. 범위를 표현할 때 매우 편리합니다. (파이썬으로 치자면 range() 함수와 비슷한 역할을 합니다.)
..을 활용한 내용이 궁금하다면, 2019/02/14 - [Language/Kotlin] - 코틀린 맵(map) 이터레이터 해당 글을 확인하시길 바랍니다.
첫번째 예제
2개의 예제를 가져왔는데, 코틀린의 in으로 범위안에 원소가 포함되어 있는지 확인하기 좋습니다. 첫번째 예제를 살펴보면,
// in을 이용하여 범위의 원소 검사하기
fun isLetter (c: Char) = c in 'a'..'z' || c in 'A'..'Z'
fun isNotDigit (c: Char) = c !in '0'..'9'
fun main(args: Array<String>) {
println("A : ${isLetter('A')}")
println("9 : ${isNotDigit('9')}")
}
실행 결과
A : true
9 : false
2번째와 3번째를 살펴보면, 2개의 메소드를 정의했습니다. 2번째줄의 메소드는 문자인지 확인하는 메소드이고, 3번째줄 메소드는 숫자인지 확인하는 메소드입니다.
"isLetter" 메소드를 살펴보면, c in 'a'..'z'는 'a' <= c && c <= 'z'와 같습니다. 3번째는 "!" 느낌표를 이용하여 부정의 의미(not)를 표현합니다.
c in 'a'..'z' // 'a' <= c && c <= 'z' 와 같다.
c !in '0'..'9' // !('0' <= c && c <= '9') 와 같다.
when을 활용하기
when을 이용하여 사용하는 방법도 있습니다. 예제를 살펴보면,
// when을 이용해서 사용할 수도 있다.
fun recognize (c: Char) = when(c) {
in '0'..'9' -> "It is digit!"
in 'a'..'z', in 'A'..'Z' -> "It is letter!"
else -> "I don't know..."
}
fun main(args: Array<String>) {
for (c in '0'..'z') {
println("${c} : ${recognize(c)}")
}
}
실행 결과
0 : It is digit!
1 : It is digit!
.. 생략 ..
: : I don't know...
.. 생략 ..
@ : I don't know...
A : It is letter!
.. 생략 ..
y : It is letter!
z : It is letter!
두번째 예제
문자열에 대해서도 사용할 수 있고, 콜렉션에서도 확인 할 수 있습니다. 예제는 짧습니다.
println("Kotlin" in "Java".."Scala") // true
"Kotlin"은 사전적으로 순서를 배열했을때 "Java"와 "Scala" 사이에 있습니다. 그렇기 때문에 in을 이용하여 결과를 출력해보면 true(참)가 나오는 것을 알 수 있습니다. 부연 설명을 하자면, "Java" <= "Kotlin" && "Kotlin" <= "Scala"와 같은 뜻입니다.
println("Kotlin" in setOf("Java", "Scala")) // false
setOf를 이용하면, 집합 콜렉션을 만들 수 있습니다. setOf() 메소드를 이용하여, "Java"와 "Scala"로 구성된 집합을 만들었습니다. 하지만, 이 집합 안에는 "Kotlin"이 없습니다. 그렇기 때문에 false(거짓)가 나오게 됩니다.
참고. 집합(set)의 특징
순서가 없고 중복이 허용안된다.
다른 Kotlin 글
2019/02/13 - [Language/Kotlin] - 코틀린의 이터레이션 for, while 루프
2019/02/15 - [Language/Kotlin] - 코틀린 설치, 인텔리제이와 JDK 설치
2019/02/12 - [Language/Kotlin] - 코틀린의 is와 스마트 캐스트(Smart cast)란?
'Language > Kotlin' 카테고리의 다른 글
코틀린의 집합, 리스트, 맵 (0) | 2019.02.25 |
---|---|
코틀린에서 예외처리하기(try catch, throw) (0) | 2019.02.22 |
코틀린 설치, 인텔리제이와 JDK 설치 (0) | 2019.02.15 |
코틀린 맵(map) 이터레이터 (0) | 2019.02.14 |
코틀린의 이터레이션 for, while 루프 (0) | 2019.02.13 |
최근댓글