zoukankan      html  css  js  c++  java
  • 统一访问原则

       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里允许这样做。

  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/jiang-Xin/p/5768941.html
Copyright © 2011-2022 走看看