《第一行代码:Android》第三版3.7标准函数 with的用法

      with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式,with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式的最后一行代码作为返回值返回。一句话说就是:with (XXX){do something,都是XXX的do something}

/**
 * You can edit, run, and share this code.
 * play.kotlinlang.org
 */

fun main() {
    println("Beginning:Hello, world!!!")
    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,演示with的用法
    //with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式
    //with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式的最后一行代码
    //作为返回值返回。一句话说就是:with (XXX){do something,都是XXX的do something}
     val list_w=listOf("Apple","Banana","Orange","Pear","Grape")
     val result_w=with(StringBuilder()){
         append("Start eating fruits.\n")
         for(fruit in list_w){
             append(fruit).append("\n")
         }
         append("Ate all fruits.")
         toString()
     }
     println(result_w)   
    
}

运行结果:

Beginning:Hello, world!!!
Start eating  fruits.
Apple
Banana
Orange
Pear
Grape
Ate all fruits.
Start eating fruits.
Apple
Banana
Orange
Pear
Grape
Ate all fruits.

这两段代码效果一样,和明显的是用with 代码更简洁一些。(我个人觉得也没好到哪里去)

标准函数run 和标准函数apply 的使用和with的作用都是类似的,但是有点细微差别,刚开始学个大概,我们就知道大概差不多就ok了,所以代码就略了。

你可能感兴趣的:(android)