【问题标题】:Changing the name of an array in a for-in loop在 for-in 循环中更改数组的名称
【发布时间】:2016-01-01 16:15:56
【问题描述】:

我有一组需要循环的数组。他们的名字只有一个区别,就是结尾有一个数字。

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])!
}

我在哪里更改数组名称的最后一个数字。是否可以这样做,或者我应该做些什么?

有可能我不知道有多少个数组。

【问题讨论】:

  • 创建一个数组数组let arr = [arr1, arr2, arr3] 然后你可以做firstDiag += Int(arr[i][i])!
  • @vacawama,做到了!
  • @vacawama 您应该将其发布为答案,以便获得积分;-)
  • @vacawama,我确实编辑了我的帖子,并在底部添加了更多信息。

标签: ios arrays swift loops swift2


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2015-06-13
    相关资源
    最近更新 更多