我在Swift中有以下代码:
var array: [[Int]] = [[6,8,1],
[3,3,3],
[2,1,2]];
for (var x=0;x<array.count;x++){
print (array[x]);
}
}
结果是:
6,8,1
3,3,3
2,1,2
为什么Swift使用1 for循环打印多维数组。我怎么样 行和列,如果我没有第二个for循环?
答案 0 :(得分:1)
因为您要为每次迭代打印数组,所以 array [x] 是数组本身
与print([6,8,1])
答案 1 :(得分:1)
您必须每行和每列访问它
for var i = 0 ; i < array.count; i++ {
for var j = 0; j < array[i].count; j++ {
print(array[i][j])
}
}
i - Row
j - Column
答案 2 :(得分:1)
Array
类型采用print
函数使用的CustomStringConvertible
协议。实现是这样的,它列出了以逗号分隔的数组中的所有元素。对于阵列中的每个元素,将使用相同协议的实现。这就是为什么你可以按照你的方式打印它,实际上你甚至可以只打印array
,甚至更多:
let array1 = [0, 1]
let array2 = [array1, array1]
let array3 = [array2, array2]
let array4 = [array3, array3]
print(array1) // [0, 1]
print(array2) // [[0, 1], [0, 1]]
print(array3) // [[[0, 1], [0, 1]], [[0, 1], [0, 1]]]
print(array4) // [[[[0, 1], [0, 1]], [[0, 1], [0, 1]]], [[[0, 1], [0, 1]], [[0, 1], [0, 1]]]]
答案 3 :(得分:0)
X增加到array.count
您的数组是一个包含数组的数组。因此它打印第1,然后是第2,第3行。
答案 4 :(得分:0)
var store: [[Int]] = [
[6, 8, 1],
[3, 3, 3],
[2, 1, 2, 4],
[]
]
// returns optional value, if you pass wrong indexes, returns nil
func getValue<T>(store:[[T]], row: Int, column: Int)->T? {
// check valid indexes
guard row >= 0 && column >= 0 else { return nil }
guard row < store.count else { return nil }
guard column < store[row].count else { return nil }
return store[row][column]
}
let v31 = getValue(store, row: 3, column: 0) // nil
let v21 = getValue(store, row: 2, column: 1) // 1
let v01 = getValue(store, row: 0, column: 1) // 8
let v23 = getValue(store, row: 2, column: 3) // 4
let store2 = [["a","b"],["c","d"]]
let u11 = getValue(store2, row: 1, column: 1)
let store3:[[Any]] = [[1, 2, "a"],[1.1, 2.2, 3.3]]
let x02 = getValue(store3, row: 0, column: 2) // "a"
let x11 = getValue(store3, row: 1, column: 1) // 2.2