Kotlin学习 04 kotlin的一些其它知识:库函数和扩展函数

kotlin 有很多函数和特性,可以方便的做一些关联操作,简化代码。例如以下一些:

一、let、also、run、with、apply 这5个标准库函数的区别

let 可以实现一个方法,将自身作为参数传递到方法中,it
run 可以实现一个方法,将自身作为参数传递到方法中,this
whit with是一个普通函数
also 可以实现一个方法,执行后直接返回当前对象
apply 传递的参数是this, 返回值也是this
1
2
3
4
5
6
7
8
9
10
val textView = TextView(context)
textView.apply {
    setOnClickListener() {
        // do something
    }
    gravity = Gravity.END
    text = mCompleteText
    setTextColor(mCompleteTextColor)
    setTextSize(TypedValue.COMPLEX_UNIT_SP, mCompleteTextSize)
} 
 
因为 apply 中默认传入this,因此可以直接给一些属性赋值 gravity、text,当然也可以通过set的方法  setTextColor();
可见,使用kotlin熟练之后,真的可以少写很多代码
 
二、扩展函数

给String定义一个扩展函数 lastChar(),让其返回最后一个字符

1
2
3
fun String.lastChar(): Char {
    return this.get(this.length - 1)
}<br>IDE提示可以转换成fun String.lastChar(): Char {<br>    return this[length - 1]<br>}// 补充判空情形。当前String可以为空(kotlin的特性)fun String?.lastChar(): Char? {<br>    return this?.get(length - 1)<br>}<br>考虑边缘情况之后<br><br><br>>>> kotlin 调用<br>fun main() {<br>    println("Kotlin".firstChar()) // 打印:K<br>    println(null.firstChar()) // 打印:null<br>}<br><br>>>> Java 怎么调用?通过自动生成的 StringExtensionsKt   System.out.println(StringExtensionsKt.lastChar("Java"));<br><br>>>> 别的类中可以调用吗?也可以调用,需要引入语法糖 <em id="__mceDel"><em id="__mceDel">sugars.lastChar </em></em>import sugars.lastCharprintln("".lastChar())

其实现的本质是什么?可以看转成后的Java代码是怎样的

1
// 扩展函数独立生成了静态公有方法(转成Java后,kotlin class 中的多个扩展函数会在同一个Java类里面)public static final Character lastChar(@NotNull String $this$lastChar) {<br>   Intrinsics.checkNotNullParameter($this$lastChar, "$this$lastChar");<br>   CharSequence var1 = (CharSequence)$this$lastChar;<br>   return var1.length() > 0 ? $this$lastChar.charAt($this$lastChar.length() - 1) : null;<br>}

  

看下面一个例子,定义一个 EditText 的扩展函数,添加 TextWatcher,并且只需要 afterTextChanged 一个实现(这不就是我们经常要干的事情吗??)

  

关于扩展函数还有很多知识,自己还要慢慢学习……

 
 
 
 
 
 
 
 
 
 
posted @   Liu Siyuan  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示