【问题标题】:I don’t understand how array[row * 3+ column] creates multidimensional array我不明白 array[row * 3+ column] 如何创建多维数组
【发布时间】:2021-10-10 21:51:51
【问题描述】:

这个问题的解决方案-https://stackoverflow.com/questions/56711736/iterate-a-grid-of-views-swiftui

包括一个像多维数组一样迭代的卡片数组,但我不明白下面的 [row * 3 + column] 部分。这如何成为一个多维数组?代码看起来像-

struct ContentView : View {
let cards = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"]
var body: some View {
    ScrollView{
        ForEach(0..<cards.count/3) { row in // create number of rows
            HStack {
                ForEach(0..<3) { column in // create 3 columns
                    Text(self.cards[row * 3 + column])
                }
            }
        }
    }
}

【问题讨论】:

  • 该代码正在创建 3 个对象的行。它与多维数组无关。他们只是在跳跃* 3

标签: arrays swift swiftui


【解决方案1】:

cards 只是一个一维数组。它只是一个基本数组,使用[] 进行索引。

在此示例中,创建了一个包含cards.count / 3 行和3 列的网格。网格按照从左到右然后向下的顺序排列:

你可以这样想,其中绿色是row,蓝色是column

row × 3 + column = index in cards

A: 0 × 3 + 0 = 0 B: 0 × 3 + 1 = 1 C: 0 × 3 + 2 = 2
D: 1 × 3 + 0 = 3 E: 1 × 3 + 1 = 4 F: 1 × 3 + 2 = 5
G: 2 × 3 + 0 = 6 H: 2 × 3 + 1 = 7 I: 2 × 3 + 2 = 8
J: 3 × 3 + 0 = 9 K: 3 × 3 + 1 = 10 L: 3 × 3 + 2 = 11

基本上每 3 个宽度,您就会下降 1 个。希望这个可视化示例可以帮助您理解该公式的作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多