gpt4 book ai didi

scala - Scala 类型 (=> A) => O 的目的

转载 作者:行者123 更新时间:2023-12-04 23:39:55 24 4
gpt4 key购买 nike

我在 this 中发现了一个奇怪的类型github上的代码:

  final class StaticRouteB[Page, O](private val f: (=> Action[Page]) => O) extends AnyVal {
def ~>(a: => Action[Page]): O = f(a)
}
  • f的类型.这是什么意思 ?我的猜测是它是一个带有按名称调用参数的函数。以前从未见过它,所以我不确定它是什么或它是如何工作的。
  • 有没有办法将这种类型翻译成更“标准”的东西? (上面的代码我的意思是,它不使用 (=> Action[Page]) => O) 类型?这种类型只是一些语法糖吗?)
  • 我特别想知道,如果我通过 Action[Page] => O 会发生什么?如 f创建时 StaticRouteB ?我会收到编译错误吗?运行时错误?为什么 ?我的意思是,(=> ... ) 的目的是什么? ?如果传递的函数类型不正确,是否会出现编译错误或更改f 的评估策略?的参数?我的意思是为什么有人想要这样的类型?出于什么目的?
  • 最佳答案

    (=> Action[Page])是“按名称调用”参数。

    所以f: (=> Action[Page]) => O是一个按名称调用类型为 Action[Page] 参数的函数,该函数返回类型为 O 的结果。

    您可以在方法 ~> 中看到它的用法。定义。

    关于scala - Scala 类型 (=> A) => O 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41097449/

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