Kotlin-标准函数

2022-04-14  本文已影响0人  cjjjjjj

1、标准函数with

1.1、Kotlin中的标准函数指的是Standard.kt(emmm...虽然可能并没多大的用但是这个文件我不知道要怎么找)文件中自定义的函数,任何Kotlin代码都可以自由的调用所有的标准函数。

1.2、with函数:with函数接收两个参数,第一个参数可以是任意类型的对象,第二个参数是一个Lambda表达式。

1.3、with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值。

val result = with(obj) {

    // 这里是obj的上下文

    "value" // with函数的返回值

}

1.4、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)

用with简化

val list = listOf("Apple","Banana","Orange","Pear","Grape")

val result = with(StringBuilder()){// 给with函数的第一个参数传入了StringBuilder对象,那么接下来整个Lambda表达式的上下文就会是这个StringBuilder对象

    append("Start eating fruits.\n")

    for(fruit in list){

        append(fruit).append("\n")

    }

    append("Ate all fruits.")

    toString()//最后一行会作为with函数的返回值

}

println(result)//将结果打印出来

2、标准函数run

2.1、run函数通常不会直接调用,而是要在某个对象的基础上调用。

2.2、run函数只接收一个Lambda参数,并且会在Lambda表达式中提供调用对象的上下文。

2.3、其他方面和with函数一样,包括也会使用Lambda表达式中的最后一行代码作为返回值返回。

val result = obj.run{

    // 这里是obj的上下文

    "value" // run函数的返回值

}

2.4、用run函数简化之前的代码

val list = listOf("Apple","Banana","Orange","Pear","Grape")

val result = StringBuilder().run{// 将调用with函数并传入StringBuilder对象改成了调用StringBuilder对象的run方法

    append("Start eating fruits.\n")

    for(fruit in list){

        append(fruit).append("\n")

    }

    append("Ate all fruits.")

    toString()

}

println(result)

3、标准函数apply

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

val result = obj.apply{

    // 这里是obj 的上下文

}

// result == obj

3.2、用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())// 因为apply函数无法指定返回值,只能返回调用对象本身,因此这里的result是一个StringBuilder对象,需要在打印的时候调用它的toString()方法才行

3.3、启动Activity最佳写法语句可以精简成:

精简语句

Demo地址:https://gitee.com/aaron222/activitytest.git

上一篇 下一篇

猜你喜欢

热点阅读