【发布时间】:2021-11-07 17:43:08
【问题描述】:
我找不到以下语法规则的解释:
FunType ::= FunTypeArgs (‘=>’ | ‘?=>’) Type
【问题讨论】:
我找不到以下语法规则的解释:
FunType ::= FunTypeArgs (‘=>’ | ‘?=>’) Type
【问题讨论】:
?=> 表示context function 类型。
上下文函数使用
?=>作为“箭头”符号编写。它们应用于合成参数,与应用具有上下文参数的方法相同。例如:given ec: ExecutionContext = ... def f(x: Int): ExecutionContext ?=> Int = ......
f(2)(using ec) // explicit argument f(2) // argument is inferred
所以,如果您认为A => B 类似于
def foo(a: A): B
那么你应该认为A ?=> B类似于
def foo(using a: A): B
它就像一个常规函数,只是参数被作为上下文参数。您可以拒绝提供它(它将从范围内的所有给定中推断出来,类似于 Scala 2 中的 implicit),或者您可以使用 using 关键字显式提供它。
【讨论】: