美文网首页面试
Android之kotlin篇(三)—— kotlin的高阶使用

Android之kotlin篇(三)—— kotlin的高阶使用

作者: 乌托邦式的爱情 | 来源:发表于2021-08-25 16:38 被阅读0次

在前面的两篇文章里面简单的介绍了关于kotlin的基础知识点,下面我们就来看一看kotlin更深一点的东西。对于前面两篇还没看过的同学,可以直接点击下面链接先去温习一下:
Android之kotlin篇(一)—— kotlin的基本使用
Android之kotlin篇(二)—— kotlin的基本使用

进入正题

kotlin之常用函数

kotlin之常用函数(let)
我们知道,kotlin中对null的处理添加了支持,可以通过?来支持空值,但是同时也意味着需要进行非空判断,关于对空值的处理看下下面这个例子:

//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1

除此之外,kotlin还内置了一个let函数来对空的处理。

// 使用Java
if( mVar != null ){
    mVar.function1();
    mVar.function2();
    mVar.function3();
}

// 使用kotlin(无使用let函数)
mVar?.function1()
mVar?.function2()
mVar?.function3()

// 使用kotlin(使用let函数)
// 方便了统一判空的处理 & 确定了mVar变量的作用域
mVar?.let {
       it.function1()
       it.function2()
       it.function3()
}

kotlin之常用函数(also)
类似let函数,但区别在于返回值:
let函数:返回值 = 最后一行 / return的表达式
also函数:返回值 = 传入的对象的本身

// let函数
var result = mVar.let {
               it.function1()
               it.function2()
               it.function3()
               999
}
// 最终结果 = 返回999给变量result

// also函数
var result = mVar.also {
               it.function1()
               it.function2()
               it.function3()
               999
}
// 最终结果 = 返回一个mVar对象给变量result

kotlin之常用函数(with)
调用同一个对象的多个方法 / 属性时,可以省去对象名重复,直接调用方法名 / 属性即可。

private fun withUse(): String {
     val stringBuilder = StringBuilder()
     return with(stringBuilder) {
           for (letter in 'A'..'Z') {
                append(letter)
           }
           append("\nNow I know the result")
           toString()
    }
}

kotlin之常用函数(run)
结合了let、with两个函数的作用,即:
(1)调用同一个对象的多个方法 / 属性时,可以省去对象名重复,直接调用方法名 / 属性即可
(2)定义一个变量在特定作用域内
(3)统一做判空处理

private fun runUse() {
      val user = User("jack", 28, "13701659446")
      val result = user.run {
            println("my name is $name, I am $age years old, my phone number is $phone")
             1000
       }
        println("result:$result")
        val data = run {
             Date()
        }
        println("date=$data")
}
// 最后打印结果
my name is jack, I am 28 years old, my phone number is 13701659446
result:1000
date=Wed Aug 25 15:54:16 CST 2021

kotlin之常用函数(apply)
与run函数类似,但区别在于返回值:
run函数返回最后一行的值 / 表达式
apply函数返回传入的对象的本身

private fun applyUse() {
     val stringBuilder = StringBuilder().apply {
           for (letter in 'A'..'Z') {
                 append(letter)
           }
           println(toString())
     }
     stringBuilder.append("\nNow I know the result")
     println(stringBuilder.toString())
}
// 最后打印结果
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Now I know the result

最后总结对比一下:


常用函数对比.png

相关文章

网友评论

    本文标题:Android之kotlin篇(三)—— kotlin的高阶使用

    本文链接:https://www.haomeiwen.com/subject/kkteiltx.html