【问题标题】:Multi-Dimensional Arrays of Different Types in SwiftSwift 中不同类型的多维数组
【发布时间】:2025-12-11 03:25:01
【问题描述】:

当所有维度都属于同一类型时,我可以在 Swift 中轻松编写多维数组,例如:

var totalTime : [[Int]]

如何让第一个维度为 String,第二个维度为 Int?

【问题讨论】:

  • 这没有意义:多维数组是数组的数组,因此整数数组将是整数数组的数组。 “第二维”是什么意思?
  • 我可以用两个数组完成我所需要的,但我很好奇是否有能力在一个多维数组中完成它。我想要一维存储 String 值,一维存储 Int 值。例如,totalTime[0] 将返回“AstroCB”,totalTime[0][0] 将检索 555。只是想看看有什么可能。
  • 啊,我明白了。您最好选择以下 erdekhayser 的解决方案。
  • 我认为你可以找到更好的解决方案here

标签: swift


【解决方案1】:

我建议改用元组数组。您想要的可以使用 Any 类型的数组来完成,但这不是一个好主意。

相反,您的数组应该是 [[(String, Int)]]。这也将比您想要做的更紧凑。

var myArray: [[(String, Int)]] = []

【讨论】:

  • 这会导致编译错误我试过 var arrayTest : [[(String, Int)]]
  • @user3412502 不知道为什么。这段代码在我的操场上运行良好:var arrayTest: [[(String, Int)]] = []; arrayTest.append([("Hello", 2)]); println(arrayTest);
  • 谢谢,我错过了= []。这回答了我的问题!谢谢!
  • @erdekhayser,谢谢。我们如何修改这些元组的值?像 myTuple = (123, "hello") 这样的简单元组可以像 myTuple.1 = "changed" 一样修改。但是 myArrayOfTuples.append([(123,"how","to","modify")]) 不能被 myArrayOfTuples[0].1 = "no way" 或 myArrayOfTuples[0](1) = "no方式”,或 myArrayOfTuples[0][1] = “没办法”。谢谢