Kotlin:扩展函数和运算符重载

Kotlin:扩展函数和运算符重载

1 扩展函数

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

比如,一段字符串中可能包含字母、数字和特殊符号等字符,现在希望统计字符串中字母的数量,要怎么实现这个功能呢?如果按照一般
的编程思维:

object StringUtil {
   

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

}

这里先定义了一个StringUtil单例类,然后在这个单例类中定义了一个lettersCount()函 数,该函数接收一个字符串参数。在lettersCount()方法中,使用for-in循环去遍历字符串中的每一个字符。如果该字符是一个字母的话,那么就将计数器加1,最终返回计数器的值。

当需要统计某个字符串中的字母数量时,只需要编写如下代码即可:

val str = "ABC123xyz!@#"
val count = StringUtil.lettersCount(str)

这种写法绝对可以正常工作,并且这也是Java编程中最标准的实现思维。但是有了扩展函数之后就不一样了,可以使用一种更加面向对象的思维来实现这个功能,比如说将lettersCount()函数添加到String类当中。

下面是扩展函数的语法结构,如下所示:

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

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

了解了定义扩展函数的语法结构,接下来就使用扩展函数的方式来优化刚才的统计功能。

由于我们希望向String类中添加一个扩展函数,因此需要先创建一个String.kt文件。文件名虽然并没有固定的要求,但是建议向哪个类中添加扩展函数,就定义一个同名的Kotlin文件,这样便于以后查找。当然,扩展函数也是可以定义在任何一个现有类当中的,并不一定非要创建新文件。不过通常来说,最好将它定义成顶层方法,这样可以让扩展函数拥有全局的访问域。

String.kt文件中编写如下代码:

fun String.letterCount(): Int {
   
  var count = 0
  for (char in this
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值