我需要循环使用一定数量的数组。他们的名字只有一个区别,那就是最后的一个数字。
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])!
}
我在哪里更改数组名称的最后一个数字。是否可以这样做,或者我还应该做些什么呢?
有可能我不知道有多少阵列。
答案 0 :(得分:1)
如果您可以创建符合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