gpt4 book ai didi

Scala future 未分配,这是在做什么?

转载 作者:行者123 更新时间:2023-12-01 22:58:30 24 4
gpt4 key购买 nike

我是 Scala 新手,我正在尝试了解这段代码在我想要更新的代码库中的作用。

删除一些细节,我不明白的部分是:

我见过一些 scala 代码,它们可以执行以下操作:

val someA = something.createSomeA(....)

Future {
someA.doSomething1(....)
someA.doSomething2(.....)
}
// then log some things unrelated to the future
someA
// end of func

我真的不明白在这种情况下 future 会做什么,因为它没有分配给任何东西。有人能解释一下 future 在这里做什么吗?我知道细节取决于 doSomethings 实际在做什么,但是有人可以大致解释一下这将是做什么的吗?我只熟悉 Future 的使用,将它们分配给变量,然后在稍后以某种方式检查是否完成。

帮助将不胜感激! (抱歉,格式不正确,我是通过手机执行此操作的)

最佳答案

给你三个字:“即发即忘”。如果您理解这种情况,当 future 被分配给一个变量,然后检查/转换时,您就已经知道这里发生了什么:Future 的内部正在异步执行。

唯一的区别是在这种情况下它永远不会被再次访问。为什么?可能是因为没人在乎。有些操作完成后会返回一个结果,可供以后使用,而其他操作则不会。

例如,如果我想异步打印日志消息,我会编写类似 Future { logger.info(mymessage) } 的内容,而不将其分配给任何内容。为什么?好吧,我并不关心它何时(甚至是否)完成。我没有可以使用的返回值,并且,如果失败......那么,除了忽略错误之外,我没有任何有意义的方法来处理它。

对于这样的操作,我不需要等待它完成,因为它无论如何都不会返回任何有用的东西。所以,我可以开始它,然后忘记。无需将其分配给任何东西。

关于Scala future 未分配,这是在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46615868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com