Scala ExecutionContext作为类或方法参数是否更惯用?

每种方法都可以通过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世界中,是否通常会首选一种样式,因为它会引起较少的惊喜,更易于阅读或其他原因?请提供一些参考。

guoyi110 回答:Scala ExecutionContext作为类或方法参数是否更惯用?

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

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

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

选择取决于您要为类和方法使用的语义。

本文链接:https://www.f2er.com/3138797.html

大家都在问