Android面试题之Kotlin扩展函数和apply函数详解

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

扩展函数
  • 扩展可以在不直接修改类定义的情况下增加类功能
  • 扩展可以用于自定义类,也可以用于标准函数
  • 和继承相似,扩展也能共享类行为,在无法接触某个类定义,或者某个类没有使用open修饰符,导致无法继承它时,扩展就是增加类功能的最好选择
  • 和定义一般函数差不多,但需要指定接收功能扩展的接受者类型
  • 默认是public,整个工程有效,若需要只在当前文件有效,可以定义为private
  • 扩展函数里自带了接收者对象的this隐式调用
//给字符串追加若干个感叹号
fun String.addExt(amount:Int = 1) = this + "!".repeat(amount)
//在超类上定义扩展函数,Any的所有子类都能使用该函数
fun Any.easyPrint() = println(this)

class TeBot()

fun main() {
    println("abc".addExt(2))
    "abc".easyPrint()
    val teBot = TeBot()
    teBot.easyPrint()
}
泛型扩展函数

新的泛型扩展函数不仅可以支持任何类型的接受者,还保留了接收者的类型信息

//泛型扩展函数
fun <T> T.easyPrint2():T{
    println(this)
    return this
}

fun main() {
    println("abc".addExt(2))
    "abc".easyPrint2().addExt(2).easyPrint2()
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值