三 可選項和控制流

2021-07-15 15:44:46 字數 2789 閱讀 9617

三.可選項 optional

1. optional

1.1optional 可選值

1

.optional是 swift 的一大特色,也是 swift 初學者最容易困惑的問題

2.定義變數時,如果指定是可選的, 可選項有可能有值

,有可能沒值;有

2種可能需要我們程式設計師自己去判斷一下

3. 定義

變數或者常量

指定型別後加乙個

?,表示該變數是可選的

4. 可選項沒有賦值

,預設是乙個

nil

5.常量可選項需要設定乙個初始值,主要用於在建構函式中

//: num 可以是乙個整數,也可以是 nil,注意如果為 nil,不能參與計算var

num: 

int ? = 

10

6. 可選項不能直接運算

可選項如果需要運算的話

,需要強制解包

.強制解包就是在可選項後邊加入乙個

!.強制解包是程式設計師自己加的

,自己加的自己負責.

注意:必須要確保解包後的值不是 nil,否則會報錯

//: num 可以是乙個整數,也可以是 nil,注意如果為 nil,不能參與計算

var num: int? = 10

//: 如果 num 為 nil,使用 `!` 強行解包會報錯

var r1 = num! + 100

翻譯在[解包]乙個可選值時發現 nil

1.3 ??運算子

1.??運算子可以用於判斷變數/常量的數值是否是nil

2.在使用 swift 開發時,??能夠簡化**的編寫

var num: int? = 10

let r1 = (num ?? 0) + 10print

(r1)

2.控制流

2.1 if

let num = 200

if num < 10 else

if num > 100 else

var a = 10

var b = 20

letc = a > b ? a : b

print(c)

適當地運用三目,能夠讓**寫得更加簡潔

2.3可選項判斷:

1.if  2. if let  3. guard  4.??

單個可選項判斷

leturl = 

nsurl

(string: 

"" )

//: 方法1: 強行解包 - 缺陷,如果 url 為空,執行時會崩潰

let request = nsurlrequest(url: url!)

//: 方法2: 首先判斷 - **中仍然需要使用 `!` 強行解包

if url != nil 

//: 方法3: 使用 `if let`,這種方式,表明一旦進入 if 分支,u 就不在是可選項

可選項條件判斷

//: 1> 初學 swift 一不小心就會讓 if 的巢狀層次很深,讓**變得很醜陋

iflet u = url

}//: 2> 使用 where 關鍵字,

多個可選項判斷

//: 3> 可以使用 `,` 同時判斷多個可選項是否為空

let oname: string? = "張三"

let ono: int? = 100

iflet name = oname }if

let name = oname, let no = ono

guard

1.guard

是swift 2.0

之後推出的

2. guard

與if let

相反

3. guard 的語法

guard let

新的變數名

=可選項

else

letoname: 

string

? = 

"張三"

let onum: int? = 18

guard let name = oname else 

guard let num = onum else 

// **執行至此,name & num 都是有值的

print(name)print

(num)

2.4switch

let score = 

"優"

switch score 

socket可選項程式設計

套接字有多種可選項,有時候是需要更改套接字可選項的,下面是一部分套接字可選項 套接字可選項是分層的。ipproto ip層可選項是ip協議相關事項,ipproto tcp層可選項是tcp協議相關事項,sol socket層是套接字相關的通用可選項。下面是讀取和設定可選項的函式 includeint ...

網路程式設計筆記 套接字可選項

套接字具體多種特性,可通過可選項更改。1 套接字可選項和i o緩衝大小 sol locket層是套接字相關的通用可選項 ipproto ip層可選項是ip協議相關事項 ipproto tcp層可選項是tcp協議相關事項 可選項的讀取和設定通過如下兩個函式完成 include intgetsockop...

第十三週可選專案 鍊錶類

動態鍊錶也是程式設計中的一種非常有用的資料結構。可以說,是否能夠理解有關操作的原理,決定了你是否有資格稱為 科班 出身。在後續的專業基礎課中,相關的內容還會從不同的角度,反覆地認識,反覆地實踐。不過,在現階段多些體驗,也是很有必要的了。1 閱讀下面的程式,回顧一下動態鍊錶,閱讀程式過程中,請用筆畫一...