许多函数语言都有一个cons
运算符。它返回不可变列表或类似数组类型的结果,并在恒定时间内将新元素附加到末尾。
作为伪代码示例,[1,2]: 3
将计算为[1,2,3]
。
Swift已使用append
在摊销固定时间内将元素添加到数组
(附带一些注意事项)。但是,append
需要一个可变的数组
。我可以从一个不可变的数组创建一个可变的数组
,然后再添加append
,但我非常惊讶的是,似乎没有一个现有的函数或操作符为我这样做,并提供摊销的恒定时间保证(如果没有共享)。
这本身不是cons
运算符,但您可以对数组使用运算符,以“构造html" target="_blank">函数样式”将数组附加或前置到可变或不可变数组上;用连接的结果构造一个新数组。
来自Swift语言指南-收藏类型:
通过将两个数组相加来创建数组
通过使用加法运算符()将两个具有兼容类型的现有数组相加,可以创建一个新数组。新数组的类型是根据您添加到一起的两个数组的类型推断出来的:
......
即。,
let foo = [1, 2]
let bar = foo + [3] // [1, 2, 3], "cons(foo, 3)"
let baz = [-1, 0] + bar // [-1, 0, 1, 2, 3], "cons([-1, 0], bar)"
然而,请注意,这不会在摊销常数时间中运行,因为我们需要分配新的内存并将结果复制到其中。然而,由于数组是Swift中的值类型,我看不出对不可变数组的任何操作——例如我们创建一个新的不可变数组——如何在常数时间中运行,因为我们总是需要为此进行复制(即使有时,这可能是懒惰地执行的)。
因此,上述方法的性能与使用构造新数组没有区别。追加
/。在现有可变内容上追加内容
,然后复制;前一步在摊销的固定时间内运行(由于阵列空间的预分配呈指数增长),但后一步在线性时间内运行。
本文向大家介绍Swift语言运算符是函数,包括了Swift语言运算符是函数的使用技巧和注意事项,需要的朋友参考一下 示例 运营商如+,-,??是一种功能使用的符号,而不是字母命名。它们与函数的调用方式不同: 字首: -x 中缀: x + y 后缀: x++ 您可以在The Swift Programming Language中阅读有关基本运算符和高级运算符的更多信息。
问题内容: 我最近从Apple 下载了 Advanced NSOperations 示例应用程序,并找到了此代码… 似乎使用了运算符来代替,但我从未见过。 它是什么? 问题答案: 它是用于语句中模式匹配的运算符。 您可以在这里了解一下如何使用和利用它来提供自己的实现: http://oleb.net/blog/2015/09/swift-pattern-matching/ http://austi
问题内容: 在“ Swift编程语言”一书(第599页)中,我遇到了使我感到困惑的这段代码。它是这样的: 其解释是: buyFavoriteSnack(_ :)函数查找给定人员的最爱小吃,并尝试为他们购买。如果他们没有列出最喜欢的小吃,它会尝试购买糖果。如果他们… 该解释如何映射到“ ??” 给定代码中的运算符。我们何时/应该在自己的代码中使用此语法? 问题答案: 它是“零合并运算符”(也称为“默
问题内容: 我没有在Swift语言参考的基本算术运算符中看到定义的幂运算符。 语言中真的没有预定义的整数或浮点运算符吗? 问题答案: 没有操作员,但是您可以使用pow函数,如下所示: 如果愿意,还可以让操作员像这样调用pow函数:
主要内容:1. 算术运算符,2.比较运算符,3.逻辑运算符,4.按位运算符,4.分配运算符,5.范围运算符,6.其它运算符,7.运算符优先级运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 Swift内置运算符丰富,它提供以下类型的运算符 - 算术运算符 比较运算符 逻辑运算符 按位运算符 分配运算符 范围运算符 杂项运算符 本教程将逐一解释算术,关系,逻辑,按位,赋值和其他运算符。 1. 算术运算符 下表显示了Swift 4语言支持的所有算术运算符。 假设变量,变量,则 - 运算符 描述
运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 区间运算符 其他运算符 本章节我们将为大家详细介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符及其他运算符。 算术运算符 以下表格列出了 Swift 语言支持的算术运算符,其中变量 A 为 10,变量 B 为 20: 运算符 描述 实例