IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 第一行代码第三版笔记(第五章kotlin部分) -> 正文阅读

[移动开发]第一行代码第三版笔记(第五章kotlin部分)

参考:https://blog.csdn.net/weixin_38244174/article/details/106002834

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

1、扩展函数
扩展函数是指在不改边某个类源码的情况下,依然可以打开这个类,并向该类提供新的函数。举例来讲:字符串包含字母、数字和特殊符号,统计字符串中字母的数量。

扩展函数的语法结构如下,相比于定义普通函数,我们只需要在前面加上一个ClassName.的语法结构,就可以将该函数添加到指定类中。

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

下面往String类中添加一个扩展函数,首先创建String.kt文件,将其定义成顶层方法一遍拥有全局访问域。

package com.company
 
fun String.letterCount(): Int {
    var count = 0
    for (char in this) {
        if (char.isLetter()) {
            count++
        }
    }
    return count
}
println(str.letterCount())

2、.有趣的运算符重载
运算符重载是Kotlin中一个有趣的语法。运算符包括±*/%等,Kotlin运算符重载允许任意两个对象相加或者更多其他操作。譬如两个Money对象相加。
运算符重载使用的是operator关键字,在指定函数前面使用operaor关键字,就可以实现运算符重载了。譬如加号运算符对应的是plus函数,减号对应的是minus函数。举例,完成两个Money对象的相加。

package com.company
 
//主构造函数接受一个value参数,用于表示钱的金额
class Money(val value: Int) {
    //使用operator关键来修饰plus函数是必不可少,将两个对象的value值相加,得到和后封装返回
    operator fun plus(money: Money): Money {
        val sum = value + money.value
        return Money(sum)
    }
   //仅仅单功能肯定不方便,Kotlin、允许我们对同一运算符进行多重重载,接受整型数字
    operator fun plus(newValue: Int): Money {
        val sum = value + newValue
        return Money(sum)
    }
}
package com.company
 
fun main() {
    val money1 = Money(5)
    val money2 = Money(10)
    val money3 = money1 + money2
    println(money3.value)
}

在这里插入图片描述
举例来讲,我们在前面使用了一个随机生成字符串长度的函数,如果使用str*n岂不是很棒?

    fun getRandomLengthString(str: String): String {
        val n = (1..20).random()
        var builder = StringBuilder()
        repeat(n) {
            builder.append(str)
        }
        return builder.toString()
    }

前面的扩展函数,扩展了String

//operator关键字必不可少,times对应*,定义扩展函数使用了String.。
operator fun String.times(n: Int): String {
    var builder = StringBuilder()
    repeat(n) {
        builder.append(this)
    }
    return builder.toString()
}
val str = "abc" * 10
println(str)

需要说明的是String类已经提供了将字符串重复n遍的repeat函数,因此可以进一步精简为:

operator fun String.times(n: Int): String = repeat(n)

最后重复任意次数的字符串代码如下:

fun getRandomLengthString(str: String): String = str * (1..20).random()
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:51:10  更:2021-09-08 10:52:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:43:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码