本文主要用於須要快速瞭解 Swift 的基礎知識。包含五大塊:html
推薦你們用 Xcode 的 Playground 來了解、練習 Swift 的基礎知識。swift
本文內容基於 Swift 5.3.
數組
在 Swift 中,經過 let 來聲明常量,var 來聲明變量。markdown
用 let 修飾的常量賦值後不可修改。app
let name = "Swift"
// 這句代碼會報錯:Cannot assign to value: 'name' is a 'let' constant
name = "Objective-C"
複製代碼
用 var 修飾的變量在賦值後仍能夠修改它的值。ide
var age = 2012
age = 2011
複製代碼
Tips: Swift 是能夠自動進行類型推斷的,Compiler 會根據你的賦值自動推斷其類型。因此在聲明常量或變量的時候能夠不寫其類型。
函數
好比下面的代碼是等效的:oop
var age = 2012
var age: Int = 2012
複製代碼
if 後的判斷條件不須要寫小括號。ui
let age = 18
if age < 18 {
print("Denied")
} else {
print("Allow")
}
複製代碼
在 Swift 中,棄用了 for(int i = 0; i <= 10, i++) 這種方式,而是採起了更加簡潔的 for-in 。spa
// 0...10 等價於 [0...10]
for i in 0...10 {
print(i)
}
// 0...10 等價於 [0...10)
for i in 0..<10 {
print(i)
}
複製代碼
var count = 10
while count > 0 {
print(count)
count -= 1
}
複製代碼
須要特別指出的是:Swift 不支持 count--
或 --count
這種語法,由於這種代碼比較容易出錯,且不易於閱讀。
經過 func 關鍵字來聲明函數。
// 無參無返回值
func doSomething() { }
// 有參無返回值
func doSomething(parameter: Int) { }
// 多個參無返回值。parameter1 、parameter2 只爲示意,真實項目中的代碼不要這樣命名。
func doSomething(parameter1: Int, parameter2: Int) -> Int { return 0 }
// 有參有返回值
func doSomething(parameter: Int) -> Int { return 0 }
複製代碼
func doSomething(parameter: inout Int) { }
複製代碼
func doSomething(parameter: Int) { }
doSomething(parameter: 10)
func doSomething1(_ parameter: Int) { }
doSomething1(10)
複製代碼
func doSomething(parameter: Int = 1024) { }
// parameter 默認值爲 1024
doSomething()
複製代碼
Array:用來存儲一組同類型、有序的數據。
// 聲明
var nums = [1, 2, 3, 4]
// 尾部添加
nums.append(5) // 1 2 3 4 5
// 移除第一個元素
nums.remove(at: 0) // 2 3 4 5
// 移除尾部元素
nums.removeLast() // 2 3 4
// 移除首部元素
nums.removeFirst() // 3 4
// 在 index 爲 2 的位置插入 10
nums.insert(10, at: 2) // 3 4 10
// 刪除所有元素
nums.removeAll() // []
複製代碼
Dictionary:用來存儲鍵值對,它的 key 是惟一的,且數據是無序的。
// 聲明
var goods = ["name": "appale", "price": "20"]
// 添加鍵值對
goods["weight"] = "10.0" // ["name": "appale", "weight": "10.0", "price": "20"]
// 修改
goods["name"] = "orange" // ["price": "20", "name": "orange", "weight": "10.0"]
// 獲取全部的 key
goods.keys //["name", "price", "weight"]
// 移除某個鍵值對
goods["name"] = nil // ["price": "20", "weight": "10.0"]
// 移除全部元素
goods.removeAll()
複製代碼
Set:用來存儲一組同類型、無序、值惟一的數據。
// 聲明
var set = Set<Int>()
// 添加元素
set.insert(10) // [10]
set.insert(20) // [20, 10]
// 由於 set 值惟一,因此仍是 [20, 10]
set.insert(10) // [20, 10]
// 移除頭部元素
set.removeFirst() // [10] 或者 [20]
// 移除全部元素
set.removeAll()
複製代碼
用 struct 關鍵字修飾,能夠聲明屬性和函數。
// 定義
struct Person {
let name: String
let age: Int
func run() { }
}
// 使用
let person = Person(name: "jack", age: 10)
person.run()
複製代碼
let jack = Person(name: "jack", age: 10)
var rose = jack
// 雖然 rose 的內容是從 jack 來的,但修改 rose 的 name 屬性並不會影響 jack 的name 屬性。
rose.name = "rose"
print(rose.name, jack.name) // rose jack
複製代碼
用 class 關鍵字修飾,能夠聲明屬性和函數。
// 聲明
class Person {
var name: String
let age: Int
func run() { }
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
// 使用
let jack = Person(name: "jack", age: 10)
var rose = jack
rose.name = "rose"
print(rose.name, jack.name) // rose rose
複製代碼