Swift之構造器的使用

2021-07-24 14:38:02 字數 2050 閱讀 7934

當結構體或者類的所有屬性都有預設值,同時沒有自定義的構造器,這個時候,swift就會給這些類或者結構體提供乙個預設構造器,這個構造器會簡單地建立乙個所有屬性值都設定為預設值的例項。看官方的swift書是這麼說的。

下面例子中建立了乙個類

shoppinglistitem

,它封裝了購物清單中的某一物品的屬性:名字(

name

)、數量(

quantity

)和購買狀態

purchase state:

class shoppinglistitem 

var item = shoppinglistitem()

由於shoppinglistitem

類中的所有屬性都有預設值,且它是沒有父類的基類,它將自動獲得乙個可以為所有屬性設定預設值的預設構造器(儘管**中沒有顯式為

name

屬性設定預設值,但由於

name

是可選字串型別,它將預設設定為

nil)。上面例子中使用預設構造器創造了乙個

shoppinglistitem

類的例項(使用

shoppinglistitem()

形式的構造器語法),並將其賦值給變數

item。

總之就是一句話,使用預設構造器的前提是你定義的類或者結構體裡邊的所有屬性都有預設值,否則是不能用預設構造器的。

逐一成員構造器是用來初始化結構體新例項裡成員屬性的快捷方法。我們在呼叫逐一成員構造器時,通過與成員屬性名相同的引數名進行傳值來完成對成員屬性的初始賦值。

下邊乙個例子,定義了乙個結構體size,她包含兩個屬性width和height,swift可以根據它們的初始賦值0.0推斷它們的型別都是double。

結構體size自動獲得了乙個逐一成員構造器init(width:height:).它可以用來為size建立新的例項。

struct size 

let twobytwo = size(width: 2.0, height: 2.0)

值型別的構造器可以通過構造器**,意思就是大的構造器裡邊可以巢狀笑的構造器,而不需要重複寫那些小的構造器,寫一次,用的時候用self.init就ok。

struct rect 

init(origin: point, size: size)

init(center: point, size: size)  }

解析:

也就是說有三種不同的構造器方法,用的時候自己按需來使用它們來建構函式,例項化變數.

指定構造器 每乙個類都必須擁有至少乙個指定構造器。指定構造器將初始化類中提供的所有屬性,並根據父類鏈往上吊用父類構造器來實現父類的初始化。很多情況下,子類自動繼承父類的構造器。

語法如下:

init (parameters)

便利構造器

便利構造器(convenience initializers)是類中比較次要的、輔助型的構造器。你可以定義便利構造器來呼叫同乙個類中的指定構造器,並為其引數提供預設值。你也可以定義便利構造器來建立乙個特殊用途或特定輸入值的例項。

你應當只在必要的時候為類提供便利構造器,比方說某種情況下通過使用便利構造器來快捷呼叫某個指定構造

器,能夠節省更多開發時間並讓類的構造過程更清晰明了。

語法如下:

convenience init (parameters)

為了簡化指定構造器和便利構造器之間的呼叫關係,swift 採用以下三條規則來限制構造器之間的**呼叫:

規則 1

:指定構造器必須呼叫其直接父類的的指定構造器。

規則 2

:便利構造器必須呼叫同一類中定義的其它構造器。

規則 3

:便利構造器必須最終導致乙個指定構造器被呼叫。

乙個更方便記憶的方法是:

• 指定構造器必須總是向上**• 便利構造器必須總是橫向**

Swift之構造器(上)

目錄 swift之構造器 上 swift之構造器 中 swift之構造器 下 swift賦予自定義型別更加豐富的功能,乙個顯著地方就是構造過程。swift可以為自定義型別設定構造器來初始化乙個例項。有關swift構造器的使用特點可以總結如下 1.構造器適用於類 結構體 列舉。是新的例項可用之前必須執...

Swift 對比學習Swift構造器

首先建立乙個類 實現方法如下 而當我們利用建構函式生成例項時有以下幾種方法 在oc的例子中,構造器initwithname age 內部呼叫了另乙個構造器,避免了 重複,下面來圍觀swift中如何實現。在swift中,當你建立乙個類或者結構體的時候,它們的屬性一定有初值 否則編譯不過,例如let a...

學習Swift 構造器 下

如果乙個類,結構體或列舉型別的物件,在構造自身的過程中有可能失敗,則為其定義乙個可失敗構造器,是非常有必要的。這裡所指的 失敗 是指,如給構造器傳入無效的引數值,或缺少某種所需的外部資源,又或是不滿足某種必要的條件等。為了妥善處理這種構造過程中可能會失敗的情況。你可以在乙個類,結構體或是列舉型別的定...