swift中“??”的含义是什么?

参见英文答案 > ?? operator in Swift                                    5个
我在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"

见第Nil-Coalescing Operator here

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...