[英]Where is the “cons” operator / function / method in Swift?
本质上,这不是cons
运算符,但是您可以对数组使用+
运算符,以“构造函数样式”将数组追加或添加到可变或不可变数组上; 用连接的结果构造一个新的数组。
来自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中的值类型,因此我看不到对不可变数组进行任何操作(例如我们创建一个新的不可变数组)如何在恒定时间内运行,因为我们始终需要为此进行复制(即使有时可能会延迟执行)。
因此,上述性能应与在现有可变.appendContentsOf
上使用.append
/ .appendContentsOf
构造新数组, 然后进行复制 ; 前一步以摊销的恒定时间运行(由于数组空间的预分配呈指数增长),而后者以线性时间运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.