0
点赞
收藏
分享

微信扫一扫

从零开始学安卓(kotlin)四——kotlin

年夜雪 2022-04-21 阅读 66
kotlin

目录

with函数

这两段代码的执行结果是一模一样的,但是明显第二段代码的写法更加简洁一些,这就是with函数的作用。

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val builder = StringBuilder()
builder.append("Start eating fruits.\n")
for (fruit in list) {
    builder.append(fruit).append("\n")
}
builder.append("Ate all fruits.")
val result = builder.toString()
println(result)
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val result = with(StringBuilder()) {
    append("Start eating fruits.\n")
    for (fruit in list) {
        append(fruit).append("\n")
    }
    append("Ate all fruits.")
toString() }
println(result)

run函数(最后一行代码作为返回值返回)

run函数通常不会直接调用, 而是要在某个对象的基础上调用;其次run函数只接收一个Lambda参数,并且会在Lambda表 达式中提供调用对象的上下文。其他方面和with函数是一样的,包括也会使用Lambda表达式中的最后一行代码作为返回值返回

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val result = StringBuilder().run {
    append("Start eating fruits.\n")
    for (fruit in list) {
    append(fruit).append("\n")
    }
    append("Ate all fruits.")
toString() }
println(result)

只是将调用with函数并传入StringBuilder对象改成了调用 StringBuilder对象的run方法,其他都没有任何区别,这两段代码最终的执行结果是完全相同的。

apply函数(调用对象相同、调用方法相同)

apply函数和run函数也是极其类似的,都要在某 个对象上调用,并且只接收一个Lambda参数,也会在Lambda表达式中提供调用对象的上下 文,但是apply函数无法指定返回值,而是会自动返回调用对象本身

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val result = StringBuilder().apply {
    append("Start eating fruits.\n")
    for (fruit in list) {
        append(fruit).append("\n")
    }
    append("Ate all fruits.")
}
println(result.toString())

定义静态方法

调用方法:类名.方法名()

  • 单例类
object Util {
    fun doAction() {
        println("do action")
} }

  • 只是希望让类中的某一个方法变成静态方法companion object
companion object {
        fun doAction2() {
            println("do action2")
} }

顶层方法

首先需要创建一个Kotlin文件。对着任意包名右击 → New → Kotlin File/Class,在弹出的对话框中输入文件名即可。注意创建类型要选择File,在这个文件中定义的任何方法都会是顶层方法,Kotlin编译器会将所有的顶层方法全部编译成静态方法,所有的顶层方法都可以在任何位置被直接调用,不用管包名路径,也不用创建实例,直接键入方法名即可。

举报

相关推荐

0 条评论