CodeEggDailyInterview icon indicating copy to clipboard operation
CodeEggDailyInterview copied to clipboard

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

Open kukyxs opened this issue 6 years ago • 1 comments

kukyxs avatar Nov 27 '19 11:11 kukyxs

  1. run 函数返回值为函数块最后一行,或者指定 return 表达式,如果调用某对象的run函数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定 return 表达式。例如
val a = "run".run {
    println(this)
    return@run 3
}
println(a)

结果为

run
3
  1. apply 调用某对象的 apply 函数,在函数块内可以通过 this 指代该对象。返回值为该对象自己。例如
val a = "apply".apply {
    println(this)
}
println(a)

结果为

apply
apply
  1. let 调用某对象的 let 函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为函数块的最后一行或指定 return 表达式,例如
val a = "let".let {
    println(it)
    4
}
println(a)

结果为

let
4
  1. also 调用某对象的 also 函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为该对象自己。例如
val a = "also".also {
    println(it)
}
println(a)

结果为

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

结果为

with
5

kukyxs avatar Nov 27 '19 14:11 kukyxs