通过Swift的基础知识,我注意到有两种方法可以将数据添加到数组中.
一种方法是使用该.append
方法,另一种方法是使用+=
运算符(允许添加> 2项数组).
使用+=
和.append
只想添加单个项目到阵列时有什么区别吗?
fooArray.append("Bar")
与
fooArray += ["Bar"]
Jojodmo.. 8
两个选项完全相同 - 向数组添加值,但+=
允许添加多个值,同时.append()
只允许添加一个值
这里有一些代码可以测试哪一个更快地添加单个值
var array: [String] = [] var array2: [String] = [] let time1 = NSDate().timeIntervalSince1970 for i in 0...1000000{ array += ["foobar"] } let time2 = NSDate().timeIntervalSince1970 let dif1 = time2 - time1 let time3 = NSDate().timeIntervalSince1970 for i in 0...1000000{ array2.append("foobar") } let time4 = NSDate().timeIntervalSince1970 let dif2 = time4 - time3
在iPhone 6s上测试这个dif1
是1.47393365859985,并且dif2
是0.385605080127716,这是100万次重复的差异1.0883285785秒.(100次运行的平均时间)
这意味着,对于仅一次重复,两者之间的差异.append
将是大约0.000001088秒,或比使用快1.088微秒+=
.
最后,你用它来附加一个值并不重要 - 这只是个人偏好(显然,如果你需要为一个数组添加一百万个值,你应该使用,.append()
因为它会明显加快)
Vikingosegundo在写这个答案时非常有帮助,按照他说的,你可以使用
func +=(inout left:[T], right: T) -> [T]{ left.append(right) return left }
为了获得两全其美 - 这将有效地转变array += value
为array.append(value)
(我相信这曾经是旧版Swift版本中的一个功能,但后来被删除了)
两个选项完全相同 - 向数组添加值,但+=
允许添加多个值,同时.append()
只允许添加一个值
这里有一些代码可以测试哪一个更快地添加单个值
var array: [String] = [] var array2: [String] = [] let time1 = NSDate().timeIntervalSince1970 for i in 0...1000000{ array += ["foobar"] } let time2 = NSDate().timeIntervalSince1970 let dif1 = time2 - time1 let time3 = NSDate().timeIntervalSince1970 for i in 0...1000000{ array2.append("foobar") } let time4 = NSDate().timeIntervalSince1970 let dif2 = time4 - time3
在iPhone 6s上测试这个dif1
是1.47393365859985,并且dif2
是0.385605080127716,这是100万次重复的差异1.0883285785秒.(100次运行的平均时间)
这意味着,对于仅一次重复,两者之间的差异.append
将是大约0.000001088秒,或比使用快1.088微秒+=
.
最后,你用它来附加一个值并不重要 - 这只是个人偏好(显然,如果你需要为一个数组添加一百万个值,你应该使用,.append()
因为它会明显加快)
Vikingosegundo在写这个答案时非常有帮助,按照他说的,你可以使用
func +=(inout left:[T], right: T) -> [T]{ left.append(right) return left }
为了获得两全其美 - 这将有效地转变array += value
为array.append(value)
(我相信这曾经是旧版Swift版本中的一个功能,但后来被删除了)