根据这里的惯例:http://docs.scala-lang.org/style/naming-conventions.html
块引用 常量名称应该在上部驼峰的情况下。也就是说,如果成员是final,immutable并且它属于包对象或对象,则可以将其视为常量(类似于Java的静态最终成员)
这是否意味着def也属于该类别?特别是如果功能纯净。例如,Parse方法:
object Parser{def Parse(string: String): AnyRef = ??? }
答案 0 :(得分:4)
不,它不应该。
这种解释主要是对稳定价值概念的简化。一个稳定的值是你可以信任的总是具有相同值的东西,它是Scala引入依赖类型的方式(也就是说,在Scala中,作为路径依赖类型)。
对于什么是稳定值有许多规则,这就是为什么在样式指南中使用更简单的解释。一条具体规则是必须 val
- var
且def
不可接受。 var
是不可接受的,因为值可以随时更改,并且def
是不可接受的,因为每次调用它时它可能会返回不同的值(即使它没有收到参数)。
与此相关的是,您可以使用def
覆盖val
,但反之亦然。
所以只有val
才有资格成为常量。
同样有趣的是,当您没有声明类型时,Scala会优化最终的val声明,如下所示:
object Constants {
final val Zero = 0
}
这将导致Scala将Zero
的实例替换为0
。实际上,如果您重新编译Constant
将Zero
的值从0
更改为其他内容,则之前编译过的任何引用Constants.Zero
的代码仍将使用{{ 1}}。
另一方面,如果你宣称它为0
,那就不会发生。
答案 1 :(得分:0)
没有。方法名称应以小写字母开头。
答案 2 :(得分:0)
没有。
参考命名约定:
方法的文本(字母)名称应该在camelCase中 第一个字母小写的样式:
def myFairMethod = ...
大写字母名称用于常量。
方法,值和变量名称应该在较低的驼峰情况下:
val myValue = ...
def myMethod = ...
var myVariable
所以在你的情况下它将是:
object Parser {
def parse(string: String): AnyRef = ???
}