API & ABI
-
API(Application Programming Interface): 應用程式程式設計介面
- 原始碼與庫之間的介面
-
ABI(Application Binary Interface): 應用程式二進位制介面
- 應用程式與作業系統之間的底層介面
- 涉及的內容有:目標內容格式、資料型別的大小、佈局、對齊,函式呼叫約定等等
swiftc
- swiftc 存放在 Xcode 內部
Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
複製程式碼
- 一些操作
- 生成語法樹
swiftc -dump-ast main.swift 複製程式碼
- 生成最簡潔的 SIL 程式碼
swiftc -emit-sil main.swift 複製程式碼
- 生成 LLVM IR 程式碼
swiftc -emit-ir main.swift -o main.ll 複製程式碼
- 生成彙編程式碼
swiftc -emit-assembly main.swift -o main.s 複製程式碼
常量
- 只能賦值一次
- 不要求在編譯器確定,但使用之前必須賦值一次
- 常量、變數在初始化之前都不能使用,這個在 OC 中是可以的
let a = 10
let b: Int
func B() -> Int {
return 20
}
b = B()
複製程式碼
識別符號
- 不能以數字開頭,不能包含空白字元、製表符、箭頭等特殊字元
- 除上述所說,幾乎可以使用任何字元
let ?? = "NB"
...
複製程式碼
常見的資料型別
思考:為什麼在 swift 中連類似Int這種基本資料結構都設計成結構體?這樣甚至可以給其新增一些方法,使我們的程式碼更具可以性和擴充套件性。 這樣就可以給整形
- 值型別
- 列舉(enum): Optional
- 結構體(struct): Bool、Int、Float、Double、Character、String、Arrary、Dictionary、Set
- 引用型別
- 類(class)
字面量
就是像字串、數字...這種
let a = 1 + 2
...
複製程式碼
元組
思考:這個資料結構是什麼樣的?
Swift 裡面 Void 就表示一個空的元組
public typealias Void = ()
let error = (404, "Not Found")
error.0
error.1
複製程式碼