Swift入門筆記(三)
再談列舉
在 C 語言中,只能為列舉 case 分配整型值, Swift 則提供了更多的靈活性
對於 String 和 Int 型別,可以忽略為列舉中的 case 賦值, Swift編譯器也能正常工作。 列舉的元素可以是結合值(associated value)
下面通過一個可以儲存一維條形碼(由3個整陣列成)和二維條形碼(由字串組成)的列舉條形碼例項來說明
guard語句
defer語句
defer 譯為延緩、推遲之意。 讀取某檔案內容並處理資料,你需要首先開啟資料夾,讀取檔案內容以及處理資料,關閉檔案以及資料夾。
static關鍵字
與C++中的靜態成員變數用法類似。 儲存與類相關的資料,而不是與物件相關的資料。比如銀行賬戶的“利率”。 靜態屬性儲存在靜態資料區。 用法:變數宣告前加上關鍵是“static”。
static var sideLength:Double
與靜態屬性對應的有靜態方法
final關鍵字
可以在類的定義中使用final關鍵字宣告類、屬性、方法和下標。 使用final宣告的類不能被繼承 使用final宣告的屬性、方法和下標不能被重寫
final class Person{…}
構造與析構
構造過程
類(或結構體)在構建例項的過程中需要進行一系列初始化工作
析構過程
例項在釋放的時候要進行一些清除資源的工作
在Swift語言中,建構函式名為init。
若沒有提供建構函式程式碼,編譯器會提供預設建構函式。 建構函式可以過載,要求引數列表不同。
Swift語言中,解構函式名為deinit
ARC自動管理記憶體,一般不需要實現解構函式; 當在物件釋放時需要做一些關閉XXX等操作時才需要;
lazy關鍵字
僅在需要時才分配記憶體,對小記憶體的手機而言 一種使用場景是,物件的屬性的初始值依賴於其它的屬性,所以必須先創建出這個物件,才能知道這個屬性的值。
下標
- 在Swift中,可以定義一些集合型別,他們可能會有一些集合型別的儲存屬性,這些屬性中的元素可以通過下標訪問。
- Swift中的下標相當於Java中的索引和C#中的索引器。
- 定義下標使用關鍵字subscript,使用下標像陣列一樣,使用[]訪問。 類,結構和列舉型別都可以通過定義下標來訪問一組或者一個序列中的成員元素
- 通過下標索引就可以方便地檢索和設定相應的值,而不需要其他的額外操作
- 下標不僅可以定義為一維的,還可以根據需要定義為多維的,多個引數的
訪問範圍
在Swift中,訪問範圍主要有兩個:模組,原始檔。 模組 是指一個應用程式包或一個框架。 原始檔 是副檔名為.swift檔案。
Swift提供了3種訪問級別: public 可以訪問自己模組中的任何public實體。如果使用import語句匯入其他模組,我們可以訪問其他模組的public實體。 internal 能訪問自己模組的任何internal實體,不能訪問其他模組中的internal實體。 internal可以省略,預設訪問許可權是internal。 private 只能在當前原始檔中使用的實體,稱為私有實體。
再論函式
函數語言程式設計:函式是“一等公民”型別(應該是引用型別) 函式可以定義變數,傳引數、返回函式等;
閉包:匿名函式(沒有名字的函式) 函式:有命閉包(方法不是閉包)
Swift高階函式,每個的作用? sort filter map flatmap reduce
函式作型別: (String) ->String
異常處理
如何建造異常型別?
如何丟擲異常?
如何獲取並處理異常?