본 글은 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
을 보고 정리한 글입니다.
Java와 다르게 객체를 비교할떄, 비교 연산자를 사용하면 자동으로 compareTo를 호출해준다.
fun main() {
val money1 = JavaMoney(2000L)
val money2 = JavaMoney(1000L)
if(money1 > money2) {
println("money1이 money2보다 큽니다")
}
동등성(Equality): 두 객체의 값이 같은가?
동일성(Identity): 완전히 동일한 객체인가 (주소가 같은가?)
Lazy 연산이란? 불필요한 연산을 피하기 위해 연산을 지연시키는 것이다.
[출처] https://dororongju.tistory.com/137
함수형 프로그래밍에서 1~10의 정수를 갖는 List에서 6보다 작고, 짝수인 요소를 찾아 10배 시킨 코드를 예시를 들자.
List<Integer> list = Arrays.asList(1,2,...,10);
System.out.println(
list.stream()
.filter(i -> i<6)
.filter(i -> i%2 == 0)
.map(i -> i*10)
.collect(Collectors.toList())
위 방식으로 항상 동작하는 방식은 Eager 연산이라고 한다!
즉 결과를 얻기 위해 필요하지 않은 연산은 수행하지 않는 방식!
코틀린에서는 연산자를 직접 오버로딩 가능하다.
fun main() {
val money1 = Money(1000L)
val money2 = Money(2000L)
println(money1 + money2) // toString이 자동으로 구현된다.
}
코틀린에서 객체마다 연산자(+, -, 단항 등..)를 직접 정의 가능하다!