What's the proper way to process each member of an array?

时间:2016-12-09 20:19:48

标签: arrays swift3

Simple question:

How can I process each member (struct or scaler) of an array?

The following are two means of doing the same thing:

enter image description here

拨打AJAX电话

我想要做的就是处理数组的每个成员。但我无法弄清楚为什么' num'必须是一个常数。

2 个答案:

答案 0 :(得分:2)

num是每个元素的,而不是对元素的引用。将值数组映射到新值的数组的正确方法是使用map

var array = [1,2,3,4,5]
array = array.map { $0 + 1 }

除了其他好处之外,这只会设置array一次,所以如果arraydidSet个观察者(在属性上比较常见,但在任何地方合法),那么它只会叫了一次。

你可以一次修改一个元素,但它更笨拙,更不安全,需要更多代码,并且有更多的副作用(比如多次执行didSet)。也就是说,它偶尔会有用。如果是这样,您需要使用下标。

var array = [1,2,3,4,5]
for index in array.indices {
    array[index] += 1
}

答案 1 :(得分:0)

我确实发现了通过不同模式使用'map':

   func setColumnIDfor(matrixRow:inout[MatrixBox]) {

        let newMatrixRow = matrixRow.map { (box) -> MatrixBox in
            var tempBox = box
            tempBox.columnID = "Q"
            return tempBox
        }

        matrixRow = newMatrixRow

    }