2014-09-10 108 views
1

我想了解有關swift中類型屬性的一些信息。Swift:類中的計算類型屬性

雨燕編程語言說

對於類,可以定義計算類型的屬性只

所以一個計算屬性不存儲值本身,而是它的計算方法。我明白了。但我不明白這樣的事情可以適用於輸入屬性。這些屬性屬於類本身,而不屬於它的一個實例。

所以,如果你使用這樣一個計算類型屬性的getter,你可能用什麼來計算它?它不能是任何其他類型的屬性,因爲它們也只能被計算屬性。你會得到一個循環的計算屬性,因爲沒有任何存儲的類型屬性。

以同樣的方式,我也沒有得到一個setter會做什麼。如果您調用計算類型屬性的setter,它可以設置什麼?沒有存儲的類型屬性需要設置。

回答

2

請記住,目前僅存儲的類屬性不受支持。您嘗試使用它們時遇到的編譯器錯誤 - 「類變量不支持而支持」 - 表示它們正在運行。計算類屬性並不一定有自己的意義

但是,計算出的屬性並不總是基於存儲數據的值。既然這樣,你可以用它們來與類相關的「靜態」只讀值,說:

class var ThisIsAClassConstant: String { return "Woo" } 

而且人們已經想出了各種辦法來存儲相關的值,例如,前兩在this answer中的單例模式中,類屬性將其狀態存儲在全局(但私有)變量中或嵌套結構內的靜態變量中。

這些顯然有點「變通方法」,但它們是實現類存儲的一種方式,但尚未正式實施。