因為這個概念,衍生了以下這些我們之前討論的事情
1. data field 會產生對應的 method
2. method 與 data field 的 name space 是同一個
3. val 可以 override val
4. val 可以 override def
「Uniform access principle」就是希望 class 的使用者端,可以不理會 class 真正的宣告方式如何,可以使用相同的方式來 access 該 class 的資料。
舉例而言:有一個資料結構,有 length 的 property。length 可以是使用 data field 存起來,也可能是使用 method 來算出來,但 Scala 希望你都可以直接使用 obj.length 來 access 該 property。這就叫「uniform access principle」。
那要如何達到「uniform access principle」?
你可以使用我們之前所提到的「data member access」原則
我們要達到使用 obj.length 的方式,可以使用的方法
1. 使用 data member 宣告
class S { var length = 0 }2. 使用 access methods
class S { def length = ... def length_=(n: Int) = {...} }請注意:access method 的 reader method 不可使用括號。
Uniform access principle 的概念將 data field 與 method 綁在一起,所以才會有一些混合 method 與 val data field 的用法,這是我們需要特別注意的地方。
沒有留言:
張貼留言