Learn about operator overloading and how the different conventions for operations like ==, <, + work in Kotlin. Add the function compareTo to the class MyDate to make it comparable. After this, the code below date1 < date2 should start to compile.
Note that when you override a member in Kotlin, the override modifier is mandatory.
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
/* TODO */
}
fun test(date1: MyDate, date2: MyDate) {
// this code should compile:
println(date1 < date2)
}
data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
override fun compareTo(other: MyDate) = when {
year != other.year -> year - other.year
month != other.month -> month - other.month
else -> dayOfMonth - other.dayOfMonth
}
}
fun test(date1: MyDate, date2: MyDate) {
// this code should compile:
println(date1 < date2)
}
MyDate
클래스에 compareTo
함수를 오버라이딩하여 MyDate
객체들을 비교 가능하게 만드는 문제이다.
Comparable
인터페이스를 구현하여 객체를 비교할 수 있으며, compareTo
함수를 오버라이딩해야 합니다.
코틀린에서 오버라이딩 하는 경우 override
라는 예약어를 함수 앞에 붙여주면 된다.
compareTo
는 객체 자신과 매개변수로 들어오는 객체를 비교한다.
여기서는 두 날짜 객체를 비교하고, 비교 결과를 정수로 반환하면 된다.
other
객체보다 작음other
객체가 같음other
객체보다 큼순서대로 연, 월, 일을 비교하도록 하여서 비교 결과를 반환시키면 date1과 date2를 비교할 수 있게 된다.