首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对象命名惯例中的Scala def大写骆驼案例?

对象命名惯例中的Scala def大写骆驼案例?
EN

Stack Overflow用户
提问于 2014-01-31 16:23:31
回答 3查看 793关注 0票数 0

给定这里的约定:http://docs.scala-lang.org/style/naming-conventions.html

封锁常量名称应该在上骆驼的情况下。也就是说,如果成员是最终的、不可变的,并且它属于包对象或对象,则可以将其视为常量(类似于Java的静态最终成员)

这是否意味着def也应该属于这一类呢?尤其是在功能上纯净的情况下。例如,Parse方法:

代码语言:javascript
运行
复制
object Parser{def Parse(string: String): AnyRef = ??? } 
EN

回答 3

Stack Overflow用户

发布于 2014-01-31 16:50:34

不,不应该。

这一解释主要是对稳定价值概念的简化。稳定值是您可以信任的始终具有相同值的东西,也是Scala引入依赖类型(也就是Scala中的依赖类型,作为路径依赖类型)的方式。

对于什么是稳定的值,有许多规则,这就是为什么在样式指南中采用更简单的解释的原因。一个具体的规则是,它必须是一个val -- vardef是不可接受的。var是不可接受的,因为值可以在任何时候更改,而def是不可接受的,因为它每次调用时都可能返回不同的值(即使它没有收到任何参数)。

与此相关的还有一个事实,即您可以使用一个def覆盖一个val,但反之亦然。

因此,只有val才具有常量的资格。

同样令人感兴趣的是,Scala在不声明类型时优化了最终的val声明,如下所示:

代码语言:javascript
运行
复制
object Constants {
  final val Zero = 0
}

这将导致Scala将Zero实例替换为0。实际上,如果您重新编译Constant,将Zero的值从0更改为其他东西,那么以前编译过的任何引用Constants.Zero的代码都将仍然使用0

另一方面,如果您将其声明为final val Zero: Int = 0,则不会发生这种情况。

票数 4
EN

Stack Overflow用户

发布于 2014-01-31 16:26:07

不是的。方法名称应以小写字母开头。

票数 0
EN

Stack Overflow用户

发布于 2014-01-31 16:26:47

不是的。

引用命名约定:

方法的文本(字母)名称应该是camelCase风格的,第一个字母小写:

代码语言:javascript
运行
复制
def myFairMethod = ...

大写名称是常量的意思。

方法、值和变量名称应在下骆驼的情况下:

代码语言:javascript
运行
复制
val myValue = ...
def myMethod = ...
var myVariable

在你的情况下会是:

代码语言:javascript
运行
复制
object Parser {
 def parse(string: String): AnyRef = ???  
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21484954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档