如何解决在Kotlin协程中调用不带括号的发射
我知道launch
是CoroutineScope的扩展功能。但是后来我看到它像这样使用:
import kotlinx.coroutines.*
fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
println("World!") // print after delay
}
println("Hello,") // main thread continues while coroutine is delayed
Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
我的理解是,在Kotlin中,可以定义一个infix函数,然后在没有任何括号的情况下调用它。但是从文档上看,我不认为launch
是一个中缀函数(实际上,它具有多个参数,因此不能为中缀)。它也不是语言中的关键字。那怎么叫它没有任何寄生?
解决方法
前两个参数是默认参数,第三个参数是高阶函数。当最后一个参数是高阶函数时,可以将Lamba移出括号。
假设您玩得开心:
fun post(s:String="default",block:()->Unit){}
您可以通过以下方式调用它:
post("1",{
})
您会得到一个建议 Lamda应该移出括号
移出括号后:
post("1"){
}
现在您可以删除第一个参数,因为它是默认参数
post {
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。