codeegginterviewgroup / CodeEggDailyInterview

码个蛋每日面试题
395 stars 54 forks source link

简述 kotlin 中 run, apply, let, with,also 的用法和区别 #159

Open kukyxs opened 4 years ago

kukyxs commented 4 years ago
  1. run 函数返回值为函数块最后一行,或者指定 return 表达式,如果调用某对象的run函数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定 return 表达式。例如

    val a = "run".run {
    println(this)
    return@run 3
    }
    println(a)

    结果为

    run
    3
  2. apply 调用某对象的 apply 函数,在函数块内可以通过 this 指代该对象。返回值为该对象自己。例如

    val a = "apply".apply {
    println(this)
    }
    println(a)

    结果为

    apply
    apply
  3. let 调用某对象的 let 函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为函数块的最后一行或指定 return 表达式,例如

    val a = "let".let {
    println(it)
    4
    }
    println(a)

    结果为

    let
    4
  4. also 调用某对象的 also 函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为该对象自己。例如

    val a = "also".also {
    println(it)
    }
    println(a)

    结果为

    also
    also
  5. with 函数和前面的几个函数使用方式略有不同,因为它不是以扩展的形式存在的。它是将某对象作为函数的参数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定 return 表达式。例如

    val a = with("with") {
    println(this)
    5
    }
    println(a)

    结果为

    with
    5