Swift 帶有私有設定方法的公有屬性

2021-09-19 09:54:09 字數 1122 閱讀 9728

swift 可以很方便地建立帶有私有設定方法的公有屬性。這可以讓你的**更加安全和簡潔。

封裝從根本上意味著類的資訊和狀態應該對外部類隱藏,只有類自身可以操作。因此,所有的 bug 和 邏輯錯誤更加不可能發生了。

通常你會使用setter以及getter來達到封裝的目的。然而,有時候你根本不想對外提供類中的設定方法。對於這樣的情況,你可以使用帶有私有設定方法的屬性。

假設我們想要建立乙個代表圓的類,那麼圓的半徑應該是可以改變的。而且,該圓的面積和直徑應該可以從圓的例項中獲取,而這兩個屬性不應該被類本身以外所更改。出於效能考慮,面積和直徑也應該只計算一次。

所以這個圓類應該是這樣的:

class circle 

}init(radius:double)

private func calculatefigures()

func getarea() -> double

func getdiameter() -> double

}

現在所有的需求都滿足啦。然而,swift 提供了一種更好的方式,可以使得這段**更加簡潔。

通過在屬性前面使用private(set),屬性就被設定為預設訪問等級的getter方法,但是setter方法是私有的。所以我們可以去掉兩個getter方法:

class circle 

}init(radius:double)

private func calculatefigures()

}

當然也可以為屬性設定公有的getter方法:

public class circle 

}public init(radius:double)

private func calculatefigures()

}

在這個例子中,屬性只是double值。然而,如果是乙個物件,可以通過使用物件的某個方法來操作!使用私有設定方法只允許設定乙個全新的物件,在使用過程中應銘記這一點。

Docker搭建帶有訪問認證的私有倉庫

2017年06月10日 17 30 26 以下步驟均為本人親自踩坑,歷經數次失敗,最終搭建成功 一 環境資訊 作業系統 centos 7 docker版本 1.12.5 更高版本應該類似 registry 2.4.1 registry web hyper docker registry web la...

帶有命名方法的委託與帶有匿名方法的委託

在 2.0 之前的 c 版本中,宣告委託的唯一方法是使用命名方法。c 2.0 引入了匿名方法,而在 c 3.0 及更高版本中,lambda 表示式取代了匿名方法,作為編寫內聯 的首選方式。不過,本主題中有關匿名方法的資訊同樣也適用於 lambda 表示式。有一種情況下,匿名方法提供了 lambda ...

帶有可變引數的方法

可變引數 在看其他人寫的 時看到了這個 這是個帶可變引數的方法。有時我們實現乙個方法時不能確定呼叫它時要傳進來幾個引數,多了少了都會產生錯誤,這時可變引數就能體現出他的優點,用三個點代替不確定的引數,呼叫時就可以傳任意個數引數值。我們先來說一下引數的儲存,函式 方法 引數是以資料結構 棧的形式訪問,...