Scala 中的约定

 内容来自书籍《Scala 实用指南》3.8

Scala 中有一些约定,可以让代码简洁且易于阅读、编写。下面是这些特性的示例。

  • 支持脚本。不是所有的代码都需要放在一个类中。如果一个脚本就能满足需求,就直 接将可执行的代码放在一个文件中,没有必要都堆在一个类中。

  • return 是可选的。假定最后一个求值的表达式能够匹配方法所声明的返回类型,那 么这个表达式的求值结果将会自动作为方法调用的结果值返回。无须加入显式的 return 语句可以简化代码,尤其是在将一个闭包传递为方法参数时。

  • 分号是可选的。不需要使用分号来标识每一个语句或者表达式的结束(参见 3.10.3 节)这个特性能够去除代码中的噪声。如果要多个语句放在同一行上面,可以使用分 号来分隔。没有分号,Scala 也能智能地推断出一个语句或者表达式是否是完整的, 如果不是,那么 Scala 将会接着在下一行读取剩余的代码。

  • 类和方法默认就是公开的,所以你无须显式使用 public 关键字。

  • Scala 提供轻便的语法以创建 JavaBeans— 它用很少的代码就能创建变量和不可变

    的属性。

  • 对于我们不关心的那些异常,Scala不会强制要求进行捕获,能够缩减代码体积,同时也能够避免不合理的异常处理。

  • 括号和点号也是可选的。

除此之外,Scala 默认会导入两个包、scala.Predef 对象以及它们相应的类和成员。 只用类名就可以从这些预导入的包中引用相应的类。Scala 按照顺序导入下面的包和类:

• java.lang
• scala
• scala.Predef

因为 java.lang 已经自动导入,所以无须额外的导入就可以在脚本中使用通用的 Java 类型。例如,可以使用 String,而且不用在前面加上包名 java.lang 作前缀或者 导入它。

也可以直接使用 Scala 的类型,因为 scala 包中的一切都已经导入。

Predef 对象中包含了类型、隐式转换以及在 Scala 中常用的一些方法。所以,既然已 经默认导入,那么无须任何前缀或者导入,就可以直接使用那些方法和隐式转换。它们太方 便了,以至于你开始相信它们是 Scala 的一部分,实际上它们是 Scala 标准库的一部分。

Predef 对象还提供了一些类型的别名,如 scala.collection.immutable.Set 和 scala.collection.immutable.Map。因此,当使用 Set 或者 Map 的时候,实际使用的 是Predef中对它们的定义,它们分别指向它们在scala.collection.immutable包中的 定义。

posted @ 2020-08-12 16:44  feiquan  阅读(49)  评论(0编辑  收藏