加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:06:32 所属栏目:安全 来源:网络整理
导读:我在 github上的 this代码中发现了一个奇怪的类型: final class StaticRouteB[Page,O](private val f: (= Action[Page]) = O) extends AnyVal { def ~(a: = Action[Page]): O = f(a) } f的类型.这是什么意思 ?我的猜测是它是一个带名字参数调用的函数.从来
我在 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的结果.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读