2014-09-29 52 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