Swift 基本語(yǔ)法
大體來(lái)說(shuō),Swift我們需要掌握下面一些常用的基本語(yǔ)法:
我會(huì)一步一步整理出來(lái), 今天暫時(shí)整理常量和變量,可選項(xiàng);
1. 常量 & 變量
2. 可選項(xiàng)
3. 控制流
if
三目
if let
guard
switch
4. 字符串
5. 循環(huán)
6. 集合
6.1 數(shù)組
6.2 集合
一. 變量和常量
1. 定義
let 定義常量铺峭,一經(jīng)賦值不允許再修改
var 定義變量拷淘,賦值之后仍然可以修改
場(chǎng)景1: 定義常量時(shí)就初始化值
//: # 常量
//: 定義常量并且直接設(shè)置數(shù)值
let x = 20
//: 常量數(shù)值一經(jīng)設(shè)置贴谎,不能修改捉邢,以下代碼會(huì)報(bào)錯(cuò)
// x = 30
場(chǎng)景2: 定義常量時(shí),不初始化, 后續(xù)初始化
//: 使用 `: 類型`,僅僅只定義類型革屠,而沒(méi)有設(shè)置數(shù)值
let x1: Int
//: 常量有一次設(shè)置數(shù)值的機(jī)會(huì)除师,以下代碼沒(méi)有問(wèn)題,因?yàn)?x1 還沒(méi)有被設(shè)置數(shù)值
x1 = 30
//: 一旦設(shè)置了數(shù)值之后稍坯,則不能再次修改,以下代碼會(huì)報(bào)錯(cuò)搓劫,因?yàn)?x1 已經(jīng)被設(shè)置了數(shù)值
// x1 = 50
場(chǎng)景3: 定義變量
//: # 變量
//: 變量設(shè)置數(shù)值之后瞧哟,可以繼續(xù)修改數(shù)值
var y = 200
y = 300
2. 自動(dòng)推導(dǎo)
Swift能夠根據(jù)右邊的代碼,推導(dǎo)出常量 / 變量的準(zhǔn)確類型
通常在開(kāi)發(fā)時(shí)枪向,不需要指定常量 / 變量的類型
如果要指定變量勤揩,可以在變量名后使用:,然后跟上變量的類型
let x2 = 100 // 會(huì)自動(dòng)推導(dǎo)出是int型
let y2 = 10.5 // 會(huì)自動(dòng)推導(dǎo)出是浮點(diǎn)型
var a = "wang" // 會(huì)自動(dòng)推導(dǎo)出是字符串型
重要技巧:Option + Click 可以查看變量的類型
3. 沒(méi)有隱式轉(zhuǎn)換C鼗住T赏觥傍衡!
Swift 對(duì)數(shù)據(jù)類型要求異常嚴(yán)格
任何時(shí)候,都不會(huì)做隱式轉(zhuǎn)換
如果要對(duì)不同類型的數(shù)據(jù)進(jìn)行計(jì)算负蠕,必須要顯式的轉(zhuǎn)換:
let x2 = 100
let y2 = 10.5
let num1 = Double(x2) + y2
let num2 = x2 + Int(y2)
4. let & var 的選擇
應(yīng)該盡量先選擇常量蛙埂,只有在必須修改時(shí),才需要修改為 var
在 Xcode 7.0 中遮糖,如果沒(méi)有修改變量绣的,Xcode 會(huì)提示修改為 let
二. Optional 可選值(可選項(xiàng))
** 1. Optional 是 Swift 的一大特色,也是 Swift 初學(xué)者最容易困惑的問(wèn)題
2.定義變量時(shí)止吁,如果指定是可選的被辑,表示該變量可以有一個(gè)指定類型的值,也可以是 nil
3.定義變量時(shí)敬惦,在類型后面添加一個(gè) ?盼理,表示該變量是可選的
4.變量可選項(xiàng)的默認(rèn)值是 nil
5.常量可選項(xiàng)沒(méi)有默認(rèn)值,主要用于在構(gòu)造函數(shù)中給常量設(shè)置初始數(shù)值**
//: num 可以是一個(gè)整數(shù)俄删,也可以是 nil宏怔,注意如果為 nil,不能參與計(jì)算
let num: Int? = 10
6.如果 Optional 值是 nil畴椰,不允許參與計(jì)算
7.只有解包(unwrap)后才能參與計(jì)算
8.在變量后添加一個(gè) !臊诊,可以強(qiáng)行解包
>注意:必須要確保解包后的值不是 nil,否則會(huì)報(bào)錯(cuò)
//: num 可以是一個(gè)整數(shù)斜脂,也可以是 nil抓艳,注意如果為 nil,不能參與計(jì)算
let num: Int? = 10
//: 如果 num 為 nil帚戳,使用 `!` 強(qiáng)行解包會(huì)報(bào)錯(cuò)
let r1 = num! + 100
//: 使用以下判斷玷或,當(dāng) num 為 nil 時(shí),if 分支中的代碼不會(huì)執(zhí)行
if let n = num {
let r = n + 10
}
常見(jiàn)錯(cuò)誤
unexpectedly found nil while unwrapping an Optional value
翻 :
在[解包]一個(gè)可選值時(shí)發(fā)現(xiàn) 為nil ,
?? 運(yùn)算符 :
** 1. ?? 運(yùn)算符可以用于判斷 變量/常量 的數(shù)值是否是 nil片任,如果是則使用后面的值替代
2.在使用 Swift 開(kāi)發(fā)時(shí)偏友,?? 能夠簡(jiǎn)化代碼的編寫(xiě) **
let num: Int? = nil
let r1 = (num ?? 0) + 10
print(r1)