本文共 1140 字,大约阅读时间需要 3 分钟。
该文是《第一行代码》第三版第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()
以加号为例,实现让两个对象相加的功能,语法结构如下:
class Obj { operator fun plus(obj: Obj) : Obj { // 处理相加的逻辑 }}
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 + money2val money4 = money3 + 20println(money4.value)
转载地址:http://odtzi.baihongyu.com/