“return”后跟 @ 和对外部块的引用是怎么回事?

发布于 2025-01-12 08:24:49 字数 382 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

动次打次papapa 2025-01-19 08:24:49

这是一种表示返回仅来自 wihtContext 块的方式。

“@”只是一个标签,它可以是显式的,例如 return @yourOwnLabel,也可以是隐式的,例如 return@withContext、return@forEach 等。Kotlin

文档中提供了更多信息:https://kotlinlang.org/docs/returns.html#return-to-labels

这是一个来自上面链接的带有显式标签的示例(修改了标签名称以使其更加明显) :

fun foo() {
    listOf(1, 2, 3, 4, 5).forEach myLabel@{
        if (it == 3) return@myLabel // local return to the caller of the lambda - the forEach loop
        print(it)
    }
    print(" done with explicit label")
}

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):

fun foo() {
    listOf(1, 2, 3, 4, 5).forEach myLabel@{
        if (it == 3) return@myLabel // local return to the caller of the lambda - the forEach loop
        print(it)
    }
    print(" done with explicit label")
}
热情消退 2025-01-19 08:24:49

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文