美文网首页Kotlin
Kotlin操作符的重载

Kotlin操作符的重载

作者: 光羽隼 | 来源:发表于2017-10-31 10:53 被阅读0次

操作符:像是+,-,*,/,!,==,a[i]等等都是操作符,当我们在使用这些操作符的时候,就相当于调用了一些内置的方法,这些方法是用保留的操作符关键字标识的方法。文末有操作符和对应方法的表。

我们可以重载这个方法,然后重新写入我们自己的逻辑行为。
重载操作符方法要使用operator关键字。

扩展函数中的操作符方法:

  • 举例1:
val mylist= listOf<Int>(23,42,22,55,12)

//重写mylist[i]的mylist的内置方法get(i)方法

operator fun List.get(postion:Int):Int=mylist[postion]+10

val x=mylist[2]
//如果不重写方法的话,x是等于22;重写方法之后x就会等于32.
  • 举例2:
//重载ViewGroup中的get方法,实现获取ViewGroup中的子控件。
operator fun ViewGroup.get(position: Int): View = getChildAt(position)

//使用重载的get方法获取子控件
val container: ViewGroup = find(R.id.container)
val view = container[2]
//相当于
val view = container.getChildAt(2)

在自己的类中重载操作符方法:

data class Person(val address:String,val student:List<String>){
     operator fun get(postion:Int):String=student[position]
}
val student=listof("li","wang","liu","zhang","lin","qian")
val p=Person("beijing",student)
//本来p不是一个列表,想取student中的数据需要一级一级调用:```p.student[i]```。重载方法之后只需要p[i]
val name=p[2]//name的值就是liu

重载操作符的对应的内置方法可以在适当的情况下让我们简化代码等好处。

一元二元操作符对应的函数.png 数组操作符对应的函数.png 等于操作符对应的函数

相等操作符有一点不同,为了达到正确合适的相等检查做了更复杂的转换,因为要得到一个确切的函数结构比较,不仅仅是指定的名称。方法必须要如下准确地被实现:
operator fun equals(other: Any?): Boolean
操作符 === 和 !== 用来做身份检查(它们分别是Java中的 == 和 != ),并且它们不能被重载。

函数调用对应的函数.png

相关文章

  • Kotlin语法基础(四)

    Kotlin语法基础篇(四) 相关链接: kotlin语言中操作符的重载 一、操作符及其重载 操作符分类可简单分为...

  • Kotlin --- Operator Overloading

    简述 Kotlin的操作符重载与C++类似,虽然没有C++那么强大,但是仍然可以实现Kotlin的操作符重载。 操...

  • 与Kotlin有关的31天-第三周

    第十五天:操作符重载 用操作符重载可以更快地编写Kotlin版的(time * 2),像Path,Range,或者...

  • Kotlin流程控制语句笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin泛型笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin与Java互操作笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin协程笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin空指针安全(null-safety)笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin函数式编程笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

  • Kotlin面向对象编程笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

网友评论

    本文标题:Kotlin操作符的重载

    本文链接:https://www.haomeiwen.com/subject/sqeppxtx.html