// 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 //
返回的是乙個可選的值
(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."
(possiblestring
!) //
需要驚嘆號來獲取值
// 輸出"an optional string."
letassumedstring:
string
! =
(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 上面的這個是顯式的強...