第7章 运算符重载及其他约定

7.1 重载算术运算符

7.1.1 重载二元算术运算

data class Point(val x: Int, val y: Int) {
    operator fun plus(other: Point): Point {
        return Point(x + other.x, y + other.y)
    }
}
val p1 = Point(10, 20)
val p2 = Point(30, 40)
println(p1 + p2) //Point(x=40, y=60)
operator fun Point.plus(other: Point): Point {
    return Point(x + other.x, y + other.y)
}

表达式

函数名

a * b

times

a / b

div

a % b

mod

a + b

plus

a - b

minus

Kotlin运算符不会自动支持交换性。如果希望用户能够使用15*p以外,还能使用p*1.6,你需要为它定义个单独的运算符:

7.1.2 重载符合运算符

7.1.3 重载一元运算符

表达式

函数名

+a

unaryPlus

-a

unaryMinus

!a

not

++a,a++

inc

--a,a--

dec

7.2 重载比较运算符

7.2.1 等号运算符:“equals”

7.2.2 排序运算符:compareTo

7.3 集合与区间的约定

7.3.1 通过下标来访问元素:“get”和“set”

7.3.2 “in”的约定

in运算符,用于检查某个对象是否属于集合。相应的函数叫做contains

7.3.3 rangeTo的约定

7.3.4 在“for”循环中使用“iterator”的约定

最后更新于

这有帮助吗?