Scala概述(三)統一的對象模型(3)

3.3.    變量和屬性(Variables and Properties

如果所有操作都是方法調用,那麼變量引用(dereferencing)和賦值語句呢?實際上,如果這兩種操作是針對類成員變量,那麼也是被解釋爲方法調用的。對於所有類成員變量x:TScala這樣定義其gettersetter

def x:T

def x_=(new val:T):unit

這些方法引用和更新一個可修改(mutable)的內存單元,它不能被Scala程序直接訪問。每一次x這個名稱被引用,都會導致調用x這個無參數方法,同樣,每次調用賦值語句:x=e,都是x_=(e) 這樣一個方法調用。

由於變量訪問也是方法調用,從而使Scala可以定義類似C#的屬性概念(properties),例如,下述Celsius類定義了一個屬性degree,只能設置大於-273的值:

 

class Celsius {

  private var d: Int = 0

  def degree: Int = d

  def degree_=(x: Int): Unit = if (x >= 273) d = x

}

    使用者可以使用這兩個方法,如同他們是一個類成員變量一樣:

val c = new Celsius; c.degree = c.degree-1

 

發佈了16 篇原創文章 · 獲贊 1 · 訪問量 2188
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章