首页 > 解决方案 > Kotlin Koans:运算符重载

问题描述

我正在完成 Kotlin Koans 的比较练习,我想知道为什么compareTo()该函数被覆盖但compare()正在使用该函数。

这两个函数在这里有什么关系?

data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) : Comparable<MyDate> {
    override fun compareTo(otherDate: MyDate): Int = when {
        year != otherDate.year -> year - otherDate.year
        month != otherDate.month -> month - otherDate.month
        else -> dayOfMonth - otherDate.dayOfMonth
    }
}

fun compare(date1: MyDate, date2: MyDate) = date1 < date2

标签: kotlin

解决方案


那里的compare()功能只是一个占位符,显示“如何使用compareTo()”,没有实际意义。您可以根据需要将其更改为其他名称。

这两个函数在这里有什么关系?

一个随机命名的函数compare()调用带有比较器符号MyDatecompareTo()函数。<


推荐阅读