标准库函数
作者:互联网
aplay:
apply 函数可以看作一个配置函数, 你可以传入一个接收者,然后调用一系列函数来配置它以便使用。调用一个个函数类配置接收者时,变量名就省掉了。
apply 能让每一个配置函数 都做用于接收者,这种行为叫做 相关作用域。
apply 执行完毕 会返回当前的接收者。
let
let 会返回lambda的最后一行。
fun formatGreeting(guestName: String?): String {
return guestName?.let {
"Welcome, $it."
} ?: "What's your name?"
}
println(formatGreeting("Jack"))
println(formatGreeting(null))
run
run 函数不返回接收者,run函数 返回lambda的结果 true/false
run 也可以用来执行 函数引用 ::函数
var file = File("E://i have a dream_copy.txt")
val result = file.run {
this.readText().contains("great")
}
println(result) //false
val result2 = "The people's Republic of China.".run(::isLong)
println(result2) //true
fun isLong(name: String) = name.length >= 10
"The people's Republic of China."
.run (::isLong)
.run (::showMessage)
.run (::println)
fun isLong(name: String) = name.length >= 10
fun showMessage(isLong:Boolean):String{
return if(isLong){
"Name is too long."
}else{
"Please rename."
}
}
with
with是run的变体。他们的功能行为是一样的。
但是调用with时需要 值参 作为其第一个参数传入。
also(类似let)
also 也是把接收者作为 值参 传给 lambda
also 返回接收者对象。
also 尤其适合针对同一原始对象,你可以基于原始的接收者对象 执行额外的链式调用。
takeIf
taleIf 类似if,先判断是否满足某个条件,在决定是否可以赋值某个变量或执行某项任务。
可以直接在对象实例上调用,避免临时变量赋值的麻烦。
标签:isLong,函数,接收者,name,标准,println,run,库函数 来源: https://blog.csdn.net/qq_33552379/article/details/121289927