Swift 屬性 Property 方法 Method

史丹佛 Swift iOS 開發筆記六:方法與屬性

第四課的細節非常多,要分成好幾篇來記錄,這一篇主要記錄 Swift 中的類別 (class) 的方法 (method) 與屬性 (Property) 相關的內容。

方法 (Method)

  1. 覆寫方法要加關鍵字: overriding 。
  2. 不允許覆寫則加: final ,可用於類別,不允許 subclass 的意思。
  3. 型別跟實例有各自的方法。

    上例中, d 是實例,使用了 .isSignMinus() (是否帶負號)方法;而 Double是型別,使用了型別的方法 .abs() 。型別方法透過 static 來宣告。

參數

在 Swift 中參數可以有內部名稱與外部名稱。顧名思義,內部名稱是方法內部使用的,外部名稱是呼叫方法時傳入參數使用。這對於程式的可讀性相信會頗大的幫助。

大部分情況下,我們不會使用外部名稱,而是直接把參數傳入,因此你可以在外部名稱的位置放一個下劃線 ( _ ) 代表不理會。

這也是 Swift 的第一個參數的預設,所以第一個參數的下劃線可以省略。如果你想要強制使用內部名稱,則可以加一個 # 號:

第二個參數開始,內部名稱預設也是外部名稱,當然你可以另外指定外部名稱。你也可以使用下劃線來省去外部名稱,但這種做法是反 Swift 的。因為第一個參數可以從方法名大概知道是做什麼,但從第二個參數開始就應該要說明是做什麼用的。

屬性 Property

屬性觀察者 Property Observers

屬性觀察者有 WillSet 跟 DidSet,代表改變前及改變後,分別有一個 newValue 跟 oldValue ,代表即將要變成那個值跟之前的值。

屬性觀察者最常用來更新用戶界面, willSet 是改變前,可以用來檢查輸入是否有效(email 格式是否正確之類); didSet 是改變後可以在這裡更新界面的值,或對舊進行一些處理。

懶惰屬性 Lazy Property

在屬性前放上 lazy 關鍵字,可使之延遲加載,也就是只有在被使用的時候,它才會被加載。

常數 (let) 無法用 lazy 只有變數 (var) 才行。

懶惰屬性還是符合「所有屬性都必須初始化」的要求。

通常用在該屬性是基於其他屬性,如父類別的屬性,必須要其他屬性處理完,才會動用到它時,就可以使用 lazy 關鍵字。

分享到: