当前位置: 首页 > 面试题库 >

?? Swift中的运算符

井逸明
2023-03-14
问题内容

在“ Swift编程语言”一书(第599页)中,我遇到了使我感到困惑的这段代码。它是这样的:

func buyFavoriteSnack(person:String) throws {
    let snackName = favoriteSnacks[person] ?? "Candy Bar"
    try vend(itemName:snackName)
}

其解释是:

buyFavoriteSnack(_ :)函数查找给定人员的最爱小吃,并尝试为他们购买。如果他们没有列出最喜欢的小吃,它会尝试购买糖果。如果他们…

该解释如何映射到“ ??” 给定代码中的运算符。我们何时/应该在自己的代码中使用此语法?


问题答案:

它是“零合并运算符”(也称为“默认运算符”)。a ?? ba(即a!)的值,除非anil,在这种情况下会产生b。即如果favouriteSnacks[person]丢失,则代之以分配"Candy Bar"

*从技术上讲, *编辑 可以解释为:(来自下面的Badar Al-Rasheed的回答)

let something = a != nil ? a! : b


 类似资料:
  • 问题内容: 我最近从Apple 下载了 Advanced NSOperations 示例应用程序,并找到了此代码… 似乎使用了运算符来代替,但我从未见过。 它是什么? 问题答案: 它是用于语句中模式匹配的运算符。 您可以在这里了解一下如何使用和利用它来提供自己的实现: http://oleb.net/blog/2015/09/swift-pattern-matching/ http://austi

  • 问题内容: 我没有在Swift语言参考的基本算术运算符中看到定义的幂运算符。 语言中真的没有预定义的整数或浮点运算符吗? 问题答案: 没有操作员,但是您可以使用pow函数,如下所示: 如果愿意,还可以让操作员像这样调用pow函数:

  • 主要内容:1. 算术运算符,2.比较运算符,3.逻辑运算符,4.按位运算符,4.分配运算符,5.范围运算符,6.其它运算符,7.运算符优先级运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Swift内置运算符丰富,它提供以下类型的运算符 - 算术运算符 比较运算符 逻辑运算符 按位运算符 分配运算符 范围运算符 杂项运算符 本教程将逐一解释算术,关系,逻辑,按位,赋值和其他运算符。 1. 算术运算符 下表显示了Swift 4语言支持的所有算术运算符。 假设变量,变量,则 - 运算符 描述

  • 运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 区间运算符 其他运算符 本章节我们将为大家详细介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符及其他运算符。 算术运算符 以下表格列出了 Swift 语言支持的算术运算符,其中变量 A 为 10,变量 B 为 20: 运算符 描述 实例

  • 为了在Swift中实现这一点,我将通过执行以下操作来获取除符号位以外的所有位, 注意数字必须是负数!如果shift操作符溢出,应用程序就会随着EXC_BAD_INSTRUCTION崩溃,这不是很好...另外,我是故意使用Int64的。因为没有更大的数据类型,所以执行类似(1<<63)的操作会溢出Int64并崩溃。因此,我没有在更大的数据类型中执行((1<<63)-1+negativeNumber)

  • 我理解CGFloat和Int之间的区别,但奇怪的是,我能够在if循环中使用 其中,image是未包装的UIImage及其大小。宽度是CGFloat,而数字200是Int类型,这可以在Xcode上运行,没有编译器错误。 然而与: Xcode返回错误: 二进制运算符' 并且Xcode无法运行。我在CGFloat上查看了Apple文档及其'=='和' 我的问题是,为什么一个有效,而另一个是错误?