Kotlin学习:扩展函数
date
May 26, 2023
slug
30
status
Published
tags
Android
Kotlin
summary
不少现代高级编程语言中有扩展函数这个概念,Java却一直以来都不支持这个非常有用的功能。值得高兴的是Kotlin给我们带来了这个功能。
type
Post
Book
扩展函数
什么是扩展函数?
扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。
语法结构
fun ClassName.methodName(param1: Int, param2: Int): Int{
return 0
}定义扩展函数只需要在函数名的前面加上一个
ClassName.的语法结构,就表示将该函数添加到指定类当中。统计字符串中字母数量
在你不了解扩展函数去实现这个功能时,你可能会想到写出如下函数:
object StringUtil {
fun lettersCount(str: String): Int {
var count = 0
for(char in str) {
if(char.isLetter()) {
count++
}
}
}
}这里先定义了一个
StringUtil单例类,然后在这个单例类中定义了一个letterCount()函数,该函数接收一个字符串参数。在letterCount()方法中,我们使用for-in循环去遍历字符串中的每一个字符。如果该字符是一个字母的话,那么就将计数器加1,最终返回计数器的值。这是
Java编程中最标准的实现思维。但是有了扩展函数之后就不一样了,我们可以使用一种更加面向对象的思维来实现这个功能,比如说将lettersCount()函数添加到String类当中。由于我们希望向
String类添加一个扩展函数,因此需要先创建一个String.kt文件。文件名虽然并没有固定的要求。但建议向哪个类中添加扩展函数,就定义一个同名的Kotlin文件,这样便于你以后查找。//String.kt
fun String.letterCount(): Int {
var count = 0
for (char in this) {
if(char.isLetter()) {
count++
}
}
return count
}这里将letterCount()方法定义成了String类的扩展函数,那么函数中就自动拥有了String实例的上下文。所以不需要接收一个字符串参数。
定义好之后,统计某个字符串中的字母数量只需要这样写即可:
val count = "ABCDSADAEWA123@@!".letterCount()