“return”后跟 @ 和对外部块的引用是怎么回事?
return@something
多次出现,如下所示:
withContext(Dispatchers.IO) {
doSomething(task)
return@withContext action(task)
}
这个@withContext
是什么意思?如果我尝试将 return
向上移动,如下所示,它不会编译:
return withContext(Dispatchers.IO) {
doSomething(task)
action(task)
}
There are multiple occurrences of return@something
, like the following:
withContext(Dispatchers.IO) {
doSomething(task)
return@withContext action(task)
}
what does this @withContext
mean? If I try to move return
up, like this, it does not compile:
return withContext(Dispatchers.IO) {
doSomething(task)
action(task)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一种表示返回仅来自 wihtContext 块的方式。
“@”只是一个标签,它可以是显式的,例如 return @yourOwnLabel,也可以是隐式的,例如 return@withContext、return@forEach 等。Kotlin
文档中提供了更多信息:https://kotlinlang.org/docs/returns.html#return-to-labels
这是一个来自上面链接的带有显式标签的示例(修改了标签名称以使其更加明显) :
This is a way to say that the return is just from the wihtContext block.
The '@' is a simply a label and it can be explicit, e.g. return @yourOwnLabel, or implicit e.g, return@withContext, return@forEach etc.
There is more info in the Kotlin documentation here: https://kotlinlang.org/docs/returns.html#return-to-labels
Here is an example with an explicit label from the link above (with the label name modified to make it more obvious):
withContext 使用给定的协程上下文调用指定的挂起块,挂起直到完成,然后返回结果。
https://kotlin.github。 io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-context.html
withContext calls the specified suspending block with a given coroutine context, suspends until it completes, and returns the result.
https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-context.html