当前位置:  开发笔记 > 编程语言 > 正文

+ =和append之间的区别是将单个项添加到数组?

如何解决《+=和append之间的区别是将单个项添加到数组?》经验,为你挑选了1个好方法。

通过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上测试这个dif11.47393365859985,并且dif20.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 += valuearray.append(value)(我相信这曾经是旧版Swift版本中的一个功能,但后来被删除了)



1> Jojodmo..:

两个选项完全相同 - 向数组添加值,但+=允许添加多个值,同时.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上测试这个dif11.47393365859985,并且dif20.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 += valuearray.append(value)(我相信这曾经是旧版Swift版本中的一个功能,但后来被删除了)


顺便说一句:你可以使用`func + = (左上:[T],​​右:T) - > [T] {left.append(右); return left}`允许`list + = a`在不使用中间数组的情况下附加赋值运算符.
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有