美文网首页
326,Kotlin-运算符重载(operator)

326,Kotlin-运算符重载(operator)

作者: 枫叶1234 | 来源:发表于2020-10-17 09:24 被阅读0次

    1、定义

    运算符重载就是对已有的运算符赋予他们新的含义。重载的修饰符是operator

    比如我们的+号,它的含义是两个数值相加:1+1=2。+ 号对应的函数名是plus

    然后对+号这个函数进行重载,可以让它可以实现减法的效果。

    这里我们实现了一个Person数据类,然后重载了Int的 + 号运算符,让一个Int对象可以直接和Person对象相加。返回的结果是这个Int对象减去Person对象的age的值所返回的的Int值。

    data class Person(var name: String, var age: Int)
     
    operator fun Int.plus(b: Person): Int {
        return this - b.age
    }
     
    fun main() {
     
        val person1 = Person("A", 3)
     
        val testInt = 5
     
        println("testInt+person1=${testInt +person1}")
    }
    //输出结果
    testInt+person1=2
     
    

    2、原理

    运算符重载实际上是函数重载,本质上是对运算符函数的调用,从运算符到对应函数的映射过程由编译器完成

    3、作用

    给我们的类提供一些自己定义的操作运算符。

    比如:我们定义了Person的数据类,然后我们重载+号运算符,让我们的Person对象可以直接调用+号来做一些函数操作。

    这里我们重载了plus()函数,也就是+号,然后让它实现了两个Person相加的时候,让他们的name和age互相相加,然后返回一个新的Person对象。

    data class Person(var name: String, var age: Int){
        operator fun plus(other:Person):Person{
             return Person(this.name+"+"+other.name,this.age+other.age)
        }
    }
    fun main() {
     
        var person1=Person("A",3)
        var person2=Person("B",4)
        var person3=person1+person2
        println("person3=$person3")
    }
     
    //输出结果
    person3=Person(name=A+B, age=7)
    
    

    4、常用的运算符及对应的函数名

    4.1一元运算符

    表达式 函数名


    截屏2020-10-17 上午9.21.44.png

    4.2、二元运算符

    截屏2020-10-17 上午9.21.51.png

    4.3、复杂运算符

    截屏2020-10-17 上午9.22.00.png

    4.4、比较运算符

    截屏2020-10-17 上午9.22.07.png

    5、注意

    截屏2020-10-17 上午9.22.14.png

    相关文章

      网友评论

          本文标题:326,Kotlin-运算符重载(operator)

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