5.6-- Kotlin 课堂:扩展函数和运算符重载

5.6.1 大有用途的扩展函数

很多高级语言都有扩展函数,但是Java 里面还这就没有扩展函数,但是我们的Kotlin 有啊,接下来我们就直奔主题,什么是扩展函数?其实就是在一个类的外部,我们为这个类定义的函数就是扩展函数,包括源码类。扩展函数命名规则有些不同,扩展函数的名字结构为    被扩展的类.扩展名称 ,举个例子:

fun main() {
    "我是".extend()
}
fun String.extend(){
    println("$this,扩展函数")
}

这下就很清晰了吧,我把String类扩展了一个extend ,然后直接调用了。这样我们的API 更加的简洁,一下子让我们的带更加的方便了起来。

5.6.2 有趣的运算符重载

在Kotlin 中运算符也是可以重载的,每个运算符其实都是一个内置函数,我们可以重载这个内置函数,让这个运算符可以有更多的功能。

那么如何重载运算符呢?我们可以通过operator 关键字,只要在指定的函数前面加上operator 关键字就可以实现重载的功能了。但是这个指定函数是什么,相信之前写Java 的伙伴们都是一头雾水,没关系这里有表:

语法糖表达式

实际调用函数

a + b

a.plus(b)

a - b

a.minus(b)

a * b

a.times(b)

a / b

a.div(b)

a % b

a.rem(b)

a++

a.inc()

a--

a.dec()

+a

a.unaryPlus()

-a

a.unaryMinus()

!a

a.not()

a == b

a.equals(b)

a > b

a < b

a >= b

a <= b

a.compareTo(b)

a..b

a.rangeTo(b)

a[b]

a.get(b)

a[b] = c

a.set(b, c)

a in b

b.contains(a)

 

每个运算符对应的函数都列出来了,有表了不起啊~我们来举个例子吧:

fun main() {
    6* "我"
}
operator fun Int.times(str:String){
    val builder = StringBuilder()
    repeat(this){
        builder.append(str)
    }

    println(builder.toString())
}

成了,注意operator 要写在fun 前面,我们这里重载了Int 类中的 * ,由于是源码类 所以我们不能直接去类的内部重载,就运用到了 扩展函数。如果在一个类的内部写运算符重载的话,那么就不需要去写扩展函数了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值