ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## [操作符重载](http://www.kotlincn.net/docs/reference/operator-overloading.html#操作符重载) [TOC] Kotlin 允许我们为自己的类型提供预定义的一组操作符的实现。这些操作符具有固定的符号表示 (如`+`或`*`)和固定的[优先级](http://www.kotlincn.net/docs/reference/grammar.html#expressions)。为实现这样的操作符,我们为相应的类型(即二元操作符左侧的类型和一元操作符的参数类型)提供了一个固定名字的[成员函数](http://www.kotlincn.net/docs/reference/functions.html#成员函数)或[扩展函数](http://www.kotlincn.net/docs/reference/extensions.html)。 重载操作符的函数需要用`operator`修饰符标记。 另外,我们描述为不同操作符规范操作符重载的约定。 ### [命名函数的中缀调用](http://www.kotlincn.net/docs/reference/operator-overloading.html#命名函数的中缀调用) 我们可以通过[中缀函数的调用](http://www.kotlincn.net/docs/reference/functions.html#中缀表示法)来模拟自定义中缀操作符。 #### 用infix函数自定义中缀操作符 我们可以通过自定义infix函数来实现中缀操作符。 ~~~ fun main(args: Array<String>) { val person = Person("Jack", 20) println(person.grow(2)) println(person grow 2) } data class Person(val name: String, val age: Int) infix fun Person.grow(years: Int): Person { return Person(name, age + years) } ~~~ 运行结果 ``` Person(name=Jack, age=22) Person(name=Jack, age=22) ```