<分区>
我在 Swift 中遇到了使用双问号(“??”)的语法。
例如,让 val = something["something"] as?字符串 ??无
这到底是什么意思?这种语法有哪些用例?
<分区>
我在 Swift 中遇到了使用双问号(“??”)的语法。
例如,让 val = something["something"] as?字符串 ??无
这到底是什么意思?这种语法有哪些用例?
最佳答案
零合并运算符
这是一种简短的形式。 (意味着您可以分配默认值 nil
或任何其他值,如果 something["something"]
是 nil
或可选)
let val = (something["something"] as? String) != nil ? (something["something"] as! String) : "default value"
nil 合并运算符 (a ?? b) 如果可选 a 包含值,则展开它;如果 a 为 nil,则返回默认值 b。表达式 a 始终是可选类型。表达式 b 必须匹配存储在 a 中的类型。
nil-coalescing 运算符是以下代码的简写:
一个!=零?一个! : 乙 上面的代码使用三元条件运算符和强制展开 (a!) 来访问在 a 不为 nil 时包裹在 a 中的值,否则返回 b。 nil-coalescing 运算符提供了一种更优雅的方式来以简洁易读的形式封装此条件检查和展开。
如果 a 的值非零,则不评估 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"
关于swift - swift中 "??"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47362914/