【问题标题】:What is the meaning of "?=>" in Scala 3? [duplicate]Scala 3中的“?=>”是什么意思? [复制]
【发布时间】:2021-11-07 17:43:08
【问题描述】:

我找不到以下语法规则的解释:

FunType ::= FunTypeArgs (‘=>’ | ‘?=>’) Type

【问题讨论】:

    标签: scala scala-3


    【解决方案1】:

    ?=> 表示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 关键字显式提供它。

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 2017-04-05
      • 2012-02-07
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多