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

在Scala中将运算符定义为方法别名的最短表示法是什么?

发布时间:2020-12-16 19:12:56 所属栏目:安全 来源:网络整理
导读:鉴于下面的通用寄存器方法,我想将:=运算符定义为符号别名. def register[Prop : Property[_]](prop: Prop): Prop@inlinefinal def :=[Prop : Property[_]] = register[Prop] _ 本来我想写这样的东西: val := = register _ 但这给了我功能签名Nothing =没有
鉴于下面的通用寄存器方法,我想将:=运算符定义为符号别名.

def register[Prop <: Property[_]](prop: Prop): Prop

@inline
final def :=[Prop <: Property[_]] = register[Prop] _

本来我想写这样的东西:

val := = register _

但这给了我功能签名Nothing =>没有.我的下一次尝试是使用类型Prop对它进行参数化,但这显然只有在我将其设为def时才有效,它可以采用类型参数并将其传递给它们.

理想情况下,我想省略@inline注释,但我不确定Scala编译器使用什么目标代码.

最重要的是我的目标是不要让:=方法复制注册方法签名的所有部分,除了名称,然后简单地让前者委托给后者.

解决方法

def :=[Prop <: Property[_]](prop: Prop) = register(prop)

应该管用.

(编辑:李大同)

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

    推荐文章
      热点阅读