我有一定数量的数组需要循环。他们的名字只有一个区别,那就是名字末尾的数字。
arr1
arr2
arr3
我想从第一个数组中获取第一个数字,从第二个数组中获取第二个数字,依此类推。我还有一个数字 n
,其中包含数组的数量和数组的数量。如果有两个数组,则每个数组有两个数字,如果有三个数组,则每个数组有三个数字,依此类推。
最初我是这样循环的:
var firstDiag = 0
for (var i = 0; i < n; i++) {
if (i == 0) {
firstDiag += Int(arr1[i])!
} else if (i == 1) {
firstDiag += Int(arr2[i])!
} else if (i == 2) {
firstDiag += Int(arr3[i])!
} else {
firstDiag += 0
}
}
但我想知道我是否可以这样做
for i in 0...n {
firstDiag += Int(arr<i>[i])!
}
我在哪里更改数组名称的最后一个数字。是否可以这样做,或者我应该做些什么?
有可能我不知道有多少数组。
最佳答案
如果您可以创建一个符合NSKeyValueCoding
的类,您可以使用valueForKeyPath(_:)
来获得您想要的。用法示例如下:
import Foundation
class Test: NSObject {
let array0 = [1, 2, 3]
let array1 = [4, 5, 6]
let array2 = [7, 8, 9]
let n = 3
func calculate() -> Int {
var firstDiag = 0
for i in 0..<n {
if let array = valueForKeyPath("array\(i)") as? Array<Int> {
firstDiag += array[i]
}
}
return firstDiag
}
}
let a = Test()
a.calculate() // Prints 15
关于ios - 在 for-in 循环中更改数组的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557752/