신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

본 글은 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 루프

 

코틀린의 이터레이션 for, while 루프

코틀린에서의 가장 기본이 되는 이터레이션에는 for와 while 루프가 있습니다. while문과 같은 경우는 Java와 동일하기 때문에 따로 설명할 필요는 없을 것 같습니다. while문 그래도 간단하게 설명하면, while문..

hongku.tistory.com

2019/02/15 - [Language/Kotlin] - 코틀린 설치, 인텔리제이와 JDK 설치

 

코틀린 설치, 인텔리제이와 JDK 설치

코틀린은 체코의 젯브레인사에서 만든 언어입니다. 그렇다보니 코틀린을 개발하기에는 인텔리제이라는 IDEA를 쓰는것이 편하고 좋습니다. 우선 인텔리제이를 설치하기 전에 코틀린을 사용하기 위해서는 jdk를 설..

hongku.tistory.com

2019/02/12 - [Language/Kotlin] - 코틀린의 is와 스마트 캐스트(Smart cast)란?

 

코틀린의 is와 스마트 캐스트(Smart cast)란?

코틀린에는 스마트 캐스트(Smart cast)가 있습니다. 간단하게 설명하면, 프로그래머가 굳이 원하는 타입으로 캐스팅 하지 않더라도, 컴파일러가 알아서 캐스팅해주는 것을 말합니다. 이해를 돕기 위해 천천히 예제..

hongku.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기