重新認識Swift中的可選型 Swift2 1

2021-09-08 18:17:44 字數 1148 閱讀 6976

//: playground - noun: a place where people can play

import uikit

/*swift中nil代表是是另外一種型別, 而不像oc那樣, 任何物件都能賦值為nil,

swift中的nil就是空, 什麼都沒有的意思, 當乙個變數有可能存在空值的時候, 必須顯式的申明為可選型,

否則不能直接賦值為nil, 因為無論是int, string還是其他的型別, 都和nil不是同一種型別,

道理就跟將乙個int型別賦值給乙個string型別的變數一樣, 是行不通的!

所以, 要想乙個變數可以賦值為nil, 就必須顯式申明為可選型, 也就是在型別後面加上"?"

下面直接**演示...

*/// let errorcode = nil 這行**會報錯, 因為swift不能自動識別這個到底是什麼型別的可選型

// let errorcode: string = nil 這行**會報錯, 因為nil和errorcode不是同一種型別(string)

// 這樣才是正確的**

var errorcode: string? = nil;

// 乙個可選型可以複製乙個同型別的非可選型(或可選型)的值, 例如這裡404是乙個string型別, 而不是string?型別

errorcode = "404"

// 但是不能直接將乙個可選值賦值給同類非可選型變數

// let errorcode2: string = errorcode // 這行**會報錯

// 要想將乙個可選值賦值給非可選型變數, 就需要對可選值進行解包操作

// 1.強制解包, 存在一定的風險, 例如errorcode為nil的時候, 會出現異常, 一般只使用在確定乙個可選值一定為非nil的時候使用

var errorcode2: string = errorcode!

// 2.if-let解包

if let errorcode = errorcode else

// 另外還可以一次對多個可選值進行解包

let errormessage: string? = "not found"

if let errorcode = errorcode, errormessage = errormessage

佇列的重新認識

今天又回顧了原來佇列那節,自己重新把 敲了一遍,但是還是犯了一些小小的錯誤,但是還是收穫了,對佇列有了近一步的認識。在此幾下僅僅為了更好的理解。錯誤分析 這個錯誤真的是犯得太幼稚了,而且還犯了兩次。在需要用到迴圈語句的地方,我這樣用 然後我列印了輸出佇列的長度 結果是 後來自己就把 重新檢驗了一遍發...

重構的重新認識

序言中,熊傑對重構的思考 認為存在的問題 1.認為掌握思想就夠了,不重重構手法 2.大刀闊斧的修改,甚者重建整個專案 重新認識 1.不要大刀闊斧 重構的基本定義 重構是在不改變軟體可觀察行為的前提下改善其內部結構。依靠的是那些已經被證明是行為保持的重構手法 整理出可測試的介面,給它新增測試,以此為重...

重新認識js中的instanceof

目錄不少人應該都知道instanceof運算子的作用是檢測物件a是否是物件b的例項,即 a instanceof b但你們知道instanceof是依照什麼來判斷的嗎?答案是 原型鏈如果a物件能夠通過原型鏈到達b物件,instanceof就會返回true,否則返回false function per...