• 统一访问原则


       Scala统一访问原则:对于无参数方法的方法形式 obj.width 又像是在直接引用 obj 对象的 width 属性,这种统一性就叫做统一访问原则,就是说代码不因为属性是通过字段实现还是方法实现而受影响。例如前面的 def Int 可以写成 val Int,然而 obj.width 访问形式不变。由于 Java 中没有统一访问原则,所以关于是 string.length(),而不 string.length;是 array.length,而不是 array.length() 的问题会突然间让人很迷惑。有了统一访问原则的 Scala,以及结合 length 方法是无副作用的,就会直接写成 string.length 和 array.length,而犯不着为此犹豫不决。

      但是有些情况下,即使对程序本身运行没有什么影响,但是考虑到用户的阅读,开发者在编写Scala代码时还是需要遵守一些规范。Scala鼓励将不带参数且没有副作用的方法定义为无参数的风格,即省略空括号。但是对于有副作用的方法不要这样做,因为那样看起来像是在使用字段。例如:println()。另一种判断的方法是:如果你调用的函数执行了操作就使用括号,但如果仅提供了对某个属性的访问,那么省略空括号。

      统一访问原则只是Scala在对待字段和方法上比Java更统一的一个方面。另一个差异是Scala里的字段和方法属于相同的命名空间。这让字段可以重写无参数方法。例如抽象类中的一个抽象方法,可以在子类中将其实现为一个字段,而无需修改父类中的抽象方法定义。Java为定义准备了四个命名空间,分别是字段、方法、类型和包;Scala仅有两个命名空间:值(字段、方法和单例对象), 类型(类和特质名)

      统一访问原则带来的另一个规则是:Scala里禁止在同一个类中用同样的名称定义方法和字段,尽管Java里允许这样做。

  • 相关阅读:
    网络需求分析课堂作业
    工程招标与投标课堂作业
    burpsuite Pro下载安装及破解 | JDK安装和配置
    渗透测试环境的搭建
    web应用基础架构
    为Linux环境安装图形化界面
    Linux基本操作
    markdown语法教程(更新中)
    VMware导入和删除虚拟机文件
    Java求幂集与List的浅拷贝深拷贝问题
  • 原文地址:https://www.cnblogs.com/jiang-Xin/p/5768941.html
Copyright © 2020-2023  润新知