Scala ExecutionContext as Class 或 Method 参数更惯用吗?
Is Scala ExecutionContext as Class or Method parameter more idiomatic?
像
这样的方法传入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 喜欢
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 世界中通常更受青睐,是因为它引起的意外更少、更易于阅读,还是出于其他原因?可能的话请给一些参考。
这两个选项具有不同的语义,因此都不是惯用语。
第一个选项允许调用者在调用时指定执行上下文,并允许不同的上下文用于不同的调用。
第二个选项要求所有调用使用相同的上下文。
选择取决于您想要的 class 和方法的语义。
像
这样的方法传入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 喜欢
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 世界中通常更受青睐,是因为它引起的意外更少、更易于阅读,还是出于其他原因?可能的话请给一些参考。
这两个选项具有不同的语义,因此都不是惯用语。
第一个选项允许调用者在调用时指定执行上下文,并允许不同的上下文用于不同的调用。
第二个选项要求所有调用使用相同的上下文。
选择取决于您想要的 class 和方法的语义。