2014-09-29 42 views
4

由於Swift很酷的行爲,我在Swift中尋找相當於or的行爲。Python「或」在Swift中相當於?

事情是這樣的:

variable = value or default 

我編寫mine

func |<T>(a:T?, b:T) -> T { 
    if let a = a { 
     return a 
    } 
    return b 
} 

但我在想,如果這個任何默認實現斯威夫特已經存在?

編輯: 感謝答案,我發現在斯威夫特書參考:

無合併運算

的零合併運算(a ?? b)解開任意一個,如果它包含一個值如果a爲零,則返回默認值b。表達式a始終是可選類型。表達式b必須與存儲在a中的類型匹配。

的零合併運算符是簡寫代碼如下:

a != nil ? a! : b 

上面的代碼使用三元條件運算符和強迫展開(a!)來訪問包裝內部a值時a不是nil,和否則返回b。 nil合併運算符提供了一種更簡潔的方式來以簡明易讀的形式封裝這個條件檢查和解包。 (source

回答

5

使用??

var optional:String? 
var defaultValue:String = "VALUE" 

var myString:String = optional ?? defaultValue 

print(myString) 
4

您可以使用零合併運算

let variable = optional ?? default