Swift Optional 可選型的解包簡單使用

2021-07-24 03:59:50 字數 793 閱讀 7913

//swift是嚴格的強型別語言

var errormessage: string? = "adfa"

if let message = errormessage else

errormessage?.uppercased()//等價上面的if判斷 ?對可選型別的errormessage 進行解包 如果不為nil 就繼續執行**, 如果為nil 解包失敗就直接終止**,不會出現報錯資訊

errormessage!.uppercased()//這個寫法要和上面的有所區分, 從意義上來說他們兩個完全不同, !表示 確定這個變數不會為空, 他仍然是個可選型別, 如果變數為空的話 這句話就會報錯

var uppercaseerrormessage = errormessage? . uppercased()//此時 uppercaseerrormessage 雖然沒有宣告為可選型別,但他確實是個可選型別, 因為errormessage?有可能返回nil 後面的表示式返回的是個可選型 所以賦值給uppercase,他就是可選型

//nil

let message2 = errormessage == nil ? "no error" : errormessage!

//簡潔強大

let message3 = errormessage ?? "no error"

// 這裡的 ?? 表示 message3 想取到 errormessage 的 值 如果errormessage 為nil 則 去 後面的值

Swift Optional可選型別

在我們使用objective c表示字串資訊的時候,可以用下面方法書寫。nsstring str lalala str nil 因為objective c是弱型別語言,所以這裡的str既可以是具體的字串也可以是nil。但到了swift中就不可以了,因為swift是型別安全的語言,乙個string型別...

Option可選值可選值(二)

playground noun a place where people can play import cocoa varstr1 供選鏈結和強制拆包的不同。class person class residence subscript i int room func printnumberofro...

python中非可選引數 Python可選引數

為了有效地使用預設值,您需要了解預設值是如何工作的。函式是物件。因此,它們具有屬性。所以,如果我建立這個函式 def f x,y return y 我建立了乙個物件。其特點如下 dir f call class closure code defaults delattr dict doc forma...