以_!结尾的方法在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 _符号的任何其他用法都是惯例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |