swift 學習 15 構造過程 01

2022-08-22 10:45:10 字數 1354 閱讀 6073

// 構造過程 是使用類,結構體 或 列舉型別的例項之前的準備過程,

// 在新例項可用前必須執行這個過程, 具體操作包括 設定例項中每個儲存型屬性的初始值 和 執行其他必須的設定 或 初始化工作

// 通過定義 構造器 來實現構造過程, 這些構造器可以看做是用來建立特定型別新例項的 特殊方法, 與 oc 中的構造器不同, swift 的構造器不需要返回值, 它們的主要任務是保證 新例項在第一次使用前完成正確的 初始化

// 類的例項也可以定義 析構器 在例項釋放前執行 特定的清除工作

// 儲存屬性的初始賦值

// 類和結構體在穿件例項時, 必須為所有儲存屬性設定合適的初始值, 儲存型屬性的值不能處於 乙個位置的狀態

// 你可以在 構造器 中為儲存型屬性賦初值, 也可以在定義屬性時 為其設定預設值

// 注意 : 當你為儲存型屬性設定預設值 或者 在構造器 中為其賦值時, 他們的值是被直接設定的, 不會觸發任何屬性觀察者

// 構造器

// 構造器在建立某個 特定型別 的新例項時被呼叫, 他的最簡形式類似於 乙個不帶任何引數的例項方法, 以關鍵字 init 命名

// init() 來表示,它沒有執行任何構造過程, 呼叫這個構造器將返回乙個 rect 例項, 他的 origin 和 size 屬性都使用定義是的 預設值 point(x:0.0,y:0.0) 和 size(width:0.0,height:0.0)

let basicrect = rect.init()

// 第二個 rect 構造器 init(origin:size:), 在功能上跟結構體在沒有自定義構造器時獲得的 逐一成員構造器是一樣的. 這個構造器只是簡單地將 origin 和 size 的引數賦值給對應的儲存型別

let originrect = rect.init(origin: point.init(x: 2.0, y: 2.0), size: size.init(width: 5.0, height: 5.0))

// 第三個 rect 構造器 init(center:size:) 稍微複雜一些, 它先通過 center 和 size 的值計算出 origin 的座標, 然後再呼叫 (或者說**給), init(origin:size:) 構造器來講新的 origin 和 size 值賦值到對應的屬性中:

let centerrect = rect.init(center: point.init(x: 4.0, y: 4.0), size: size.init(width: 3.0, height: 3.0))

// 構造器 init(center:size:) 可以直接將 origin 和 size 的新值賦值到對應的屬性中, 然後, 利用恰好提供了相關功能的現有構造器會 更為方便, 構造器init(center:size)的意圖也會更加清晰

Swift學習之構造過程

類和結構體的儲存屬性必須在例項建立時,設定合適的初始值,可以提供預設值,也可以在構造器中提供初始值 1.構造引數 如果構造器的引數使用了外部引數名,必須使用,也可以用 代替,不適用外部引數名 struct celsius init twotemperature two double let onec...

swift學習筆記 五 構造過程

構造過程是為了使用某個類 結構體或列舉型別的例項而進行的準備過程。在構造過程中,對每乙個屬性進行了初始值預設和其它必要的準備和初始化工作。與oc相比,swift的建構函式。不須要返回值。同一時候,在類和結構體的構造過程中,必須對全部的儲存型別屬性,包括繼承自父類的屬性。賦予合適的初始值。儲存型別值不...

Swift 對比學習Swift構造器

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