gpt4 book ai didi

scala - Scala ExecutionContext 作为类或方法参数更惯用吗?

转载 作者:行者123 更新时间:2023-12-05 01:22:59 25 4
gpt4 key购买 nike

在每个方法中传递 ExecutionContext 是否更符合 Scala 习惯,例如

class Foo {
def bar(a: Int, b: Int)(implicit ec: ExecutionContext): Future[Int] = {
Future(a + b)
}

def baz(a: Int, b: Int)(implicit ec: ExecutionContext): Future[Int] = {
Future(a - b)
}
}

或者更好地在每个类中传递ExecutionContext,例如

class Foo(implicit ec: ExecutionContext) {
def bar(a: Int, b: Int): Future[Int] = {
Future(a + b)
}

def baz(a: Int, b: Int): Future[Int] = {
Future(a - b)
}
}

在 Scala 世界中,一种风格通常更受欢迎,是因为它引起的意外更少、更容易阅读,还是出于其他原因?如果可能的话请提供一些引用。

最佳答案

这两个选项具有不同的语义,因此都不是惯用的。

第一个选项允许调用者在调用时指定执行上下文,并允许不同的调用使用不同的上下文。

第二个选项要求所有调用使用相同的上下文。

选择取决于您想要的类和方法的语义。

关于scala - Scala ExecutionContext 作为类或方法参数更惯用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58764533/

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