코틀린하고 파이썬을 같이 공부하면서 차이점을 비교하는건 흥미롭다. 근데, 이게 시간이 지날수록 더욱 헷갈리기 시작한다. 그래서 짧지만 생각날 때마다 기록해 두려고. 이번 주제는 ‘not’. Kotlin 일반적인 비교연산자에 ‘같지 않다’는 둘 다 동일하게 ‘!=’을 쓴다. Kotlin에서는 이와 동일하게, ‘not’의 의미로 ‘!'(exclamation mark)를 쓴다. 위의 예제와 같은식이다. ‘not’은 Kotlin 키워드에 존재하지 않는다. operator를 overloading 할 때만 다음과 같이…
[태그:] 코틀린
BigDecimal, BigInteger
Kotlin 공부용으로 커맨드라인 계산기 만들면서 정수로는 Java의 BigInterger를 써서 크기제한이 없이 계산이 가능하게 되었다. 하지만, 계산기가 실수를 다루지 못한다면 쓸모가 없기 때문에 이왕 하는거 크기제한 없는 실수를 찾아보니 BigInteger와 유사하게 Java에 BigDecimal 클래스가 있다. 내부 계산 방법도 궁금하긴 하지만, 어쨌든 BigDecimal 클래스를 사용하면 원하는 기능은 쉽게 구현되겠네. OpenJDK 레퍼런스 : https://devdocs.io/openjdk~8/java/math/package-summary Kotlin 레퍼런스 : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/java.math.-big-decimal/
Destructuring Declarations in Kotlin
코틀린을 보다보면, 다음과같이 파이썬에서나 볼듯한 기이한 표현을 마주하는 경우가 있다. 일반적인 표현은 아닌데, 이처럼 한큐에 여러 변수들에 값을 저장하는게 가능하다. 이를 Desturturing Declarations라고 부른다. 위 코드는 컴파일 타임에 다음과 같이 변형된다. 보면 알겠지만, 내가 만드는 클래스에 component1(), component2()를 정의 하면 역시 이처럼 사용가능하다. data class에는 이미 구현되어 있기 때문에, 예외적인 경우가 아니라면 data class를 쓰는게…
Kotlin과 Python에서 ‘is’ 키워드의 다른 사용
python에서 ‘is’ 키워드는 ‘==’와 비교될 수 있는데, ‘==’가 값이 같은지 검사한다면, ‘is’는 어떤 오브젝트를 참조하는지 비교한다. 다음의 stack overflow질문을 참고. https://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is Kotlin에도 ‘is’ 키워드가 있지만, 의미는 전혀 다르다. Kotlin에는 ‘is’, ‘as’ 키워드가 있으며, ‘is’는 타입체크를 위해, ‘as’는 타입 캐스팅을 위해 존재한다. 다음의 공식 문서 참고. https://kotlinlang.org/docs/reference/typecasts.html 그러니까 Kotlin의 ‘is’는 python의 isinstance()에 해당한다. 이름이 같다고 헷갈림…