scala类型的目的(=> A)=> O.

前端之家收集整理的这篇文章主要介绍了scala类型的目的(=> A)=> O.前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 github上的 this代码中发现了一个奇怪的类型:

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] =>会发生什么?创建StaticRouteB时O为f?我会收到编译错误吗?运行时错误?为什么?我的意思是,(=> …)的目的是什么?如果没有传递正确的函数或改变f参数的评估策略,是否会产生编译错误?我的意思是为什么有人想要这样的类型?出于什么目的?

解决方法

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

所以f:(=> Action [Page])=> O是具有Action [Page]类型的名称调用参数的函数,该函数返回类型O的结果.

您可以在方法中看到它的用法〜>定义.

猜你在找的Scala相关文章