Kotlin杂记之扩展函数和运算符重载

前言

该文是《第一行代码》第三版第5章Kotlin部分的笔记,方便记忆以及日后复习

扩展函数和运算符重载

一、扩展函数

(一)什么是扩展函数?

扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。

(二)语法结构

定义扩展函数的语法结构:

fun ClassName.methodName(param1: Int, param2: Int) : Int {
	return 0
}

相比于定义一个普通函数,定义扩展函数只需要在函数名的前面加上一个ClassName.的语法结构,就表示将该函数添加到指定类当中了。

(三)实例

我们为String类添加一个扩展函数,这个扩展函数可以统计字符串的字母数量。
我们新创建一个文件String.kt,一般来说扩展函数对文件名没有要求,但为了方便查找,建议与类名相同。
现在在String.kt文件中编写如下代码:

fun String.lettersCount(): Int {
	var count = 0
	for (char in this) {
		if(char.isLetter()) {
			count++;
		}
	}
	return count;
}

定义好了扩展函数之后,统计某个字符串中的字母数量只需要这样写:

val count = "ABCASCA#!@#".lettersCount()

二、运算符重载

  • 运算符重载的关键字是operator,只要在指定的函数的前面加上operator关键字,就可以实现运算符重载的功能
  • 不同运算符对应的重载函数也是不同的,比如加号运算符对应的是plus()

以加号为例,实现让两个对象相加的功能,语法结构如下:

class Obj {
	operator fun plus(obj: Obj) : Obj {
		// 处理相加的逻辑
	}
}
  • Kotlin允许我们对同一个运算符进行多重重载
class Money(val value: Int) {
	operator fun plus(money: Money) : Money {
		val sum = value + money.value
		return Money(sum)
	}
	operator fun plus(newValue: Int): Money {
		val sum = value + newValue
		return Money(sum)
	}
}

调用:

val money1 = Money(5)
val money2 = Money(10)
val money3 = money1 + money2
val money4 = money3 + 20
println(money4.value)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值