//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...