Swift隱式解析,可選,斷言

2021-07-25 13:34:26 字數 2268 閱讀 5595

// swift 可選

/**

注意:c

和objective-c

中並沒有可選這個概念。最接近的是

objective-c

中的乙個特性,乙個方法要不返回乙個物件要不返回

nil,

nil表示

「缺少乙個合法的物件

」。然而,這只對物件起作用

——對於結構體,基本的

c 型別或者列舉型別不起作用。對於這些型別,

objective-c

方法一般會返回乙個特殊值(比如

nsnotfound

)來暗示值缺失。這種方法假設方法的呼叫者知道並記得對特殊值進行判斷。然而,

swift

的可選可以讓你暗示任意型別的值缺失,並不需要乙個特殊值。 */

// 例子

//使用可選(

optionals

)來處理值可能缺失的情況

letabc =

"123"

//申明乙個字串

abc

其值為"123"

letxyz =

int(

abc)

//轉成

int型

若可轉成功

為optional(123)

否為nil //

返回的是乙個可選的值

print

(xyz)

if(xyz!=

nil) //

當確定某個可選的確切有值的時候,可以用"!

"來強制解析他。 //

型別標註

varser :

int? =

404

ser=

nil

//型別標註

varwww :

string

? // www

就是nil

/**swift

的nil

和objective-c

中的nil

並不一樣。在

objective-c

中,nil

是乙個指向不存在物件的指標。在

swift

中,nil

不是指標

——它是乙個確定的值,用來表示值缺失。任何型別的可選都可以被設定為

nil,不只是物件型別。

**/ /*

乙個隱式解析可選其實就是乙個普通的可選,但是可以被當做非可選來使用,並不需要每次都使用解析來獲取可選值。下面的例子展示了可選

string

和隱式解析可選

string

之間的區別:

純文字複製*/

letpossiblestring:

string

? =

"an optional string."

print

(possiblestring

!) //

需要驚嘆號來獲取值

// 輸出"an optional string."

letassumedstring:

string

! =

print

(assumedstring

) //

不需要感嘆號

// 輸出

//斷言

判斷乙個條件是否為真 //

你可以使用全域性

assert

函式來寫乙個斷言。向

assert

函式傳入乙個結果為

true

或者false

的表示式以及一條資訊,當表示式為

false

的時候這條資訊會被顯示:

letage = -3

assert

(age

>= 0,

"a person's old cannot be less than zero")

//如果

age >=0

不會出錯

。但是<0

斷言被立即觸發

執行不下去.

//何時使用斷言 //

//當條件可能為假時使用斷言,但是最終一定要保證條件為真,這樣你的**才能繼續執行。斷言的適用情景: //

整數的附屬指令碼索引被傳入乙個自定義附屬指令碼實現,但是下標索引值可能太小或者太大。 //

需要給函式傳入乙個值,但是非法的值可能導致函式不能正常執行。 //

乙個可選值現在是

nil,但是後面的**執行需要乙個非

nil值。

swift可選隱式可選型別

可選型別 隱式可選型別 在swift中,可選魯迅個其實是乙個,列舉型別,裡面有none和some兩種型別。其實所謂的nil就是optional.none,非nil就是optional.some,然後會通過some t 包裝 wrap 原始值,這也是為什麼可選型別需要拆包的原因,也是playgroun...

swift 隱式可選型例項詳解

1 隱式可選型的基本使用 var errormessage string?nil errormessahrgfllige not found the message is errormessage 隱式可選型的定義 var errormessage string nil errormessage n...

15 5 Swift隱式強引用

15.5 隱式強引用 class student func show void deinit 此時,stu0 和stu1 都引用了同乙個物件 varstu0 student student init name tom varstu1 stu0 stu0 nil stu1 nil 上面的這個是顯式的強...