其他分享
首页 > 其他分享> > 标准库函数

标准库函数

作者:互联网

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