kotlin语法分析(三)

操作符的重载

kotlin 有一些固定数量象征性的操作符,可以在任何类中去引用它们, 就是创建一个方法, 方法名为保留的操作符的关键字,这样就可以将这个操作符的行为映射到这个方法,重载这些代码可以增加代码的可读性和简介性.

一元操作符表
操作符函数
+aa.unaryPlus()
-aa.unaryMinus()
!aa.not()
a++a.inc()
a–a.dec()
二元操作符
操作符函数
a + ba.plus(b)
a - ba.minus(b)
a * ba.times(b)
a / ba.div(b)
a % ba.mod(b)
a … ba.rangTo(b)
a in ba.contains(b)
a !in b!a.contains(b)
a += ba.plusAssign(b)
a -= ba.minusAssign(b)
a *= ba.timesAssign(b)
a /= ba.divAssign(b)
a %= ba.modAssign(b)
数组操作符
操作符函数
a[i]a.get(i)
a[i,j]a.get(i,j)
a[i_1, … , j_1]a.get(i_1, … , j_1)
a[i]=ba.set(i,b)
a[i,j]=ba.set(i,j,b)
a[i_1, … , j_1]=ba.set(i_1, … , j_1,b)
等于操作符
操作符函数
a == ba?.equals(b) ?: b === null
a != b!a?.equals(b) ?: b === null

?: 相当于一个简写的if语句,如果左面不是不是null,返回 ?: 左侧的内容,反之,右侧
相等操作符有一点不同的是,为了达到合适的相等检查做了复杂的转换,因为要得到一个确切的函数结构比较,不仅仅是指定的名称.方法必须要如下准确的实现:

operator fun equals(other: Any?): Boolean

操作符 === 和 !== 用来做身份检查,并且不能被重载

函数调用
函数调用
a(i)a.invoke(b)
a(i,j)a.invoke(i,j)
a(i_1,…,i_n)a.invoke(i_!,…,i_n)

举个例子:
kotlin是实现了 数组操作的所以我们可以像java中的数组一样访问list的每一项,除此之外,也可以修改list里面的元素

val x = myList[2]
myList[2] = 4
扩展函数的操作符

我们不需要去扩展自己的类,但是我们需要使用扩展函数扩展我们已经存在的类和第三方库.

operator fun ViewGroup.get(position: Int): View = getChildAt(position)

那么现在使用这个就会 从ViewGroup中 通过position得到一个 view

var container : ViewGroup=find(R.id.container)
var view =container[2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值