在 Kotlin 中,運(yùn)算符重載允許你為自定義類型(如類或結(jié)構(gòu)體)定義新的運(yùn)算符行為。要實(shí)現(xiàn)運(yùn)算符重載,你需要遵循以下步驟:
Point
類,用于表示二維平面上的點(diǎn):data class Point(val x: Double, val y: Double)
operator
關(guān)鍵字來(lái)定義運(yùn)算符重載函數(shù)。運(yùn)算符重載函數(shù)的名稱必須包含所重載的運(yùn)算符。例如,我們要為 Point
類實(shí)現(xiàn)加法運(yùn)算符 +
:fun Point.plus(other: Point): Point {
return Point(x + other.x, y + other.y)
}
這里,我們?cè)?Point
類后面添加了一個(gè)名為 plus
的函數(shù),它接受一個(gè) Point
類型的參數(shù) other
,并返回一個(gè)新的 Point
實(shí)例,其坐標(biāo)為兩個(gè)點(diǎn)對(duì)應(yīng)坐標(biāo)之和。
val p1 = Point(1.0, 2.0)
val p2 = Point(3.0, 4.0)
val p3 = p1 + p2 // 使用加法運(yùn)算符
println("p1 + p2 = (${p3.x}, ${p3.y})") // 輸出 "p1 + p2 = (4.0, 6.0)"
注意,Kotlin 支持多種運(yùn)算符重載,包括基本的算術(shù)運(yùn)算符(如 +
、-
、*
、/
)、比較運(yùn)算符(如 ==
、!=
、>
、<
等)以及邏輯運(yùn)算符(如 &&
、||
、!
等)。要實(shí)現(xiàn)這些運(yùn)算符的重載,只需按照上述方法為自定義類型編寫(xiě)相應(yīng)的運(yùn)算符函數(shù)即可。