参见英文答案 >
?? operator in Swift 5个
我在Swift中遇到了一个语法,其中使用了双重问号(“??”).
我在Swift中遇到了一个语法,其中使用了双重问号(“??”).
例如,让val =某事[“某事”]为?字串?零
这到底是什么意思?这种语法有哪些用例?
解决方法
Nil-Coalescing运算符
这是一种简短的形式. (表示如果[“something”]为零或可选,您可以指定默认值nil或任何其他值)
let val = (something["something"] as? String) != nil ? (something["something"] as! String) : "default value"
如果a包含值,则nil-coalescing运算符(a ?? b)展开可选a;如果a为n,则返回默认值b.表达式a始终是可选类型.表达式b必须与存储在a中的类型匹配.
nil-coalescing运算符是下面代码的简写:
a!=零?一个! :b
上面的代码使用三元条件运算符和强制解包(a!)来访问包含在a不是nil时的值,否则返回b. nil-coalescing运算符提供了一种更简洁的方式来以简洁易读的形式封装此条件检查和解包.
如果a的值不为nil,则不评估b的值.这被称为短路评估.
下面的示例使用nil-coalescing运算符在默认颜色名称和可选的用户定义颜色名称之间进行选择:
let defaultColorName = "red" var userDefinedColorName: String? // defaults to nil var colorNametoUse = userDefinedColorName ?? defaultColorName // userDefinedColorName is nil,so colorNametoUse is set to the default of "red"