在SE-0173中,为MutableCollection
添加了一个新的方法:swapAt
,它接受一个集合中的两个Index
位置,并直接在原集合对象上交换对应位置的元素:
var numbers = [0, 1, 2, 3, 4, 5]
numbers.swapAt(0, 5)
// [5, 1, 2, 3, 4, 0]
而在Swift 3中,我们得这样使用swap
:
// In Swift 3
swap(&numbers[0], &numbers[5])
numbers // [0, 1, 2, 3, 4, 5]
之所以要添加swapAt
方法,简单来说,是因为之前的swap
方法违背了Swift Ownership Manifesto中的约定,在一个函数里,同一个变量不能传递给两个inout
参数。因此,在未来的Swift版本里,swap
方法会被标记为过期,让开发者过渡到swapAt
方法。
网友评论