【Kotlin】学习笔记(六)扩展函数、运算符重载

一、扩展函数

  • 扩展函数可以在不修改类的定义的情况下,为类增加新的功能,可以为自定义类扩展,也可以扩展内置的类如String、List

  • 扩展函数的语法结构

1
2
3
fun ClassName.methodName(param1: Int, param2: Int): Int {
return 0
}

如果要给String类增加一个letterCount方法对字符串中字母的数量进行统计:

1
2
3
4
5
6
7
8
9
fun String.lettersCount(): Int {
var count = 0
for (char in this) {
if (char.isLetter()) {
count++
}
}
return count
}

便可以进行使用:

1
2
println("Adjkr#ip==1".lettersCount()) 
// >> 7

二、运算符重载

  • 使用运算符重载可以重新定义已有的运算符,赋予其另一种功能,以适应不同的数据类型。

使用operator进行重载

  • 以为Vector类重载加号运算符为例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Vector(var x: Float, var y: Float) {
operator fun plus(b: Vector): Vector {
return Vector(this.x+b.x, this.y+b.y)
}
override fun toString(): String {
return "(${this.x}, ${this.y})"
}
}

fun main() {
val a = Vector(1f, 2f)
val b = Vector(2f, 3f)
val c = a + b
println(c)
// >> (3.0, 5.0)
}

运算符方法名对照表

对照表


【Kotlin】学习笔记(六)扩展函数、运算符重载
https://chordfish-k.github.io/2023/04/17/kotlin/kotlin-20230417/
作者
超弦鱼
发布于
2023年4月17日
许可协议