Kotlin 2个相同类型的操作员过载功能

Kotlin 2个相同类型的操作员过载功能,kotlin,Kotlin,我正在做练习,不知道编译器如何选择要使用的MyDate.plus()函数: import TimeInterval.* import java.util.Calendar data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) enum class TimeInterval { DAY, WEEK, YEAR } operator fun MyDate.plus(timeInterval: TimeInte

我正在做练习,不知道编译器如何选择要使用的
MyDate.plus()
函数:

import TimeInterval.*
import java.util.Calendar

data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int)

enum class TimeInterval { DAY, WEEK, YEAR }

operator fun MyDate.plus(timeInterval: TimeInterval) = addTimeIntervals(timeInterval, 1)

class FullTimeInterval(val timeInterval: TimeInterval, val number: Int) 
operator fun TimeInterval.times(number: Int) = FullTimeInterval(this, number)

operator fun MyDate.plus(timeIntervals: FullTimeInterval) 
= addTimeIntervals(timeIntervals.timeInterval, timeIntervals.number)

fun task1(today: MyDate): MyDate {
    return today + YEAR + WEEK 
}

fun task2(today: MyDate): MyDate {
    return today + YEAR * 2 + WEEK * 3 + DAY * 5
}  

您有两个类:
TimeInterval
FullTimeInterval
以及两个重载函数:
MyDate.plus(时间间隔:TimeInterval)
MyDate.plus(时间间隔:FullTimeInterval)

编译器知道参数的类型,并通过签名选择最接近的函数。该决定在编译时做出,并取决于参数的计算类型

有关这方面的更多信息,请访问
您有两个类:
TimeInterval
FullTimeInterval
以及两个重载函数:
MyDate.plus(时间间隔:TimeInterval)
MyDate.plus(时间间隔:FullTimeInterval)

编译器知道参数的类型,并通过签名选择最接近的函数。该决定在编译时做出,并取决于参数的计算类型

有关这方面的更多信息,请访问

我想我现在明白了-这将决定是通过
FullTimeInterval
(时间*2)还是
TimeInterval
(时间)我想我现在明白了-这将决定是通过
FullTimeInterval
(时间*2)还是
TimeInterval
(时间)