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

以_!结尾的方法在Scala有特殊含义吗?

发布时间:2020-12-16 21:33:16 所属栏目:安全 来源:网络整理
导读:以_!结尾的方法如delete_!或i_is_!有特殊意义吗?他们是“只是名字”?他们遵循一些惯例吗?甚至还有bulkDelete _ !! (具体的上下文是提升,如果它有所作为). 解决方法 我不知道使用_!和_!在电梯里,但这里有一点背景. 任何字母数字标识符都可以具有_和添
以_!结尾的方法如delete_!或i_is_!有特殊意义吗?他们是“只是名字”?他们遵循一些惯例吗?甚至还有bulkDelete _ !! (具体的上下文是提升,如果它有所作为).

解决方法

我不知道使用_!和_!在电梯里,但这里有一点背景.

任何字母数字标识符都可以具有_和添加的符号列表,并仍然被解析为单个标识符.例如:

scala> class Example_!@%*!
defined class Example_$bang$at$percent$times$bang

(实际上,如果您使用反向标签环绕它,您几乎可以解析任何标识符 – 如果Java类使用Scala保留字,或者如果要在标识符中使用空格,则这是您执行的操作.)

但编译器只能识别一个符号结尾.如果有一个看起来像一个getter的方法,那么getter_ =将被解释为一个setter. (无论你是否真的用它作为一个设定者取决于你,它将具有一个设定者的语义.)所以

scala> class Q { def q = "Hi"; def q_=(s: String) { println(s.reverse) } }
defined class Q

scala> val q = new Q
q: Q = Q@b5c12e

scala> q.q
res0: java.lang.String = Hi

scala> q.q = "Could use this to set something"
gnihtemos tes ot siht esu dluoC

此外,编译器以任何结束于:的方法反转调用者和被调用者的顺序.这通常在列表中看到:newElement :: existingList实际上是对existingList.::(newElement)的调用.所以,例如:

scala> object Caps { def to_:(s: String) = s.toUpperCase }
defined module Caps

scala> "Example" to_: Caps
res40: java.lang.String = EXAMPLE

_符号的任何其他用法都是惯例.

(编辑:李大同)

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

    推荐文章
      热点阅读