gpt4 book ai didi

scala - 人们为什么使用_?作为标识符后缀?

转载 作者:行者123 更新时间:2023-12-02 20:59:39 24 4
gpt4 key购买 nike

我开始阅读Lift框架源代码,我发现有很多方法都是使用methodName_?这样的名称定义的,是否有一个约定_?有什么特殊含义吗?

def empty_? : Boolean = {}

最佳答案

您不太可能在电梯框架之外看到该结构;我怀疑这主要是 Ruby 嫉妒。

几乎所有其他 Scala 项目都会回避这种语法。不是因为尾随的问号,而是因为它是在代码中引入下划线的另一种方式 - 而且该符号已经严重过载。

根据对多个 Scala 项目的评估,该表示法可以合理地描述为非惯用的。

更新

需要下划线的原因是为了消除中缀表示法的歧义,其中:

x?y

将被读作

x.?(y)

其中 ? 是方法名称。鉴于:

x_?y

明确地将 x_? 标记为原子。

该语法是正式称为“混合标识符”的示例,旨在允许如下定义

def prop_=(v:String) = ... //setter
def unary_- = ... //prefix negation operator

当类似的构造仅用于在方法名称末尾添加问号时,它可以(可以说)被视为黑客攻击。

关于scala - 人们为什么使用_?作为标识符后缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4354261/

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