Arrays 有没有办法在Swift中声明任意数量的数组?

Arrays 有没有办法在Swift中声明任意数量的数组?,arrays,swift,variable-declaration,Arrays,Swift,Variable Declaration,我不熟悉编程和Swift;如果我问了一个明显的问题,我会道歉。我正在尝试模拟一个排名选择投票算法。它的几个部分是有效的,但我坚持一个基本想法:我需要生成任意数量的数组,其中包含每个选民的假想投票。我希望软件能够生成许多大致如下所示的阵列: var ballot1=[“candidateB”、“Candidatetea”、“candidateD”] var ballot2=[“候选”,“候选”] 到目前为止,我已经手工编写了我所需要的,但我想自动化这个过程。在Swift中,有没有一种方法可以声明

我不熟悉编程和Swift;如果我问了一个明显的问题,我会道歉。我正在尝试模拟一个排名选择投票算法。它的几个部分是有效的,但我坚持一个基本想法:我需要生成任意数量的数组,其中包含每个选民的假想投票。我希望软件能够生成许多大致如下所示的阵列:

var ballot1=[“candidateB”、“Candidatetea”、“candidateD”]
var ballot2=[“候选”,“候选”]
到目前为止,我已经手工编写了我所需要的,但我想自动化这个过程。在Swift中,有没有一种方法可以声明任意数量的包含数组的变量,而不必手工编写每个数组?我希望能够指定一个任意整数-10,比如说…或2500?-让一个函数吐出那么多数组。(我单独开发了一个函数来创建一个包含random In-parameters内容的random In-parameters length数组,但我一直在尝试跨多个数组复制该函数。)


我尝试了各种for-in循环,但是每当我试图使用代码声明新变量时,我都会遇到各种错误。有没有一种简单的方法让软件声明名称递增的变量(例如,
ballot1
ballot2
ballot3
,等等)?我错过了什么明显的东西吗?谢谢你的建议。

使用数组数组,正如jnpdx在评论中所说的那样

let ballot1 = ["candidateB", "candidateA", "candidateD"] 
let ballot2 = ["candidateC", "candidateD"]
let ballots = [ballot1, ballot2]

或者只是

let ballots = [["candidateB", "candidateA", "candidateD"],
    ["candidateC", "candidateD"]]
然后,您可以使用索引参考您的选票:

ballots[0]
将为您提供第一次投票的候选人数组,或者您也可以在外部数组中循环:

for (index, ballot) in ballots.enumerated() {
   print("Ballot \(index+1) has candidates \(ballot[index])")
}
请注意,您可能希望使每个选票成为一个结构,其中包含标题字段、候选人数组以及您可能需要的任何其他信息。然后您可以有一个投票结构数组:

struct Ballot {
   let title: String
   let description: String? // Optional field
   let candidates: [String]
}
然后:

let ballots = [Ballot(title: "5th congressional district",
                  description: nil,
                  candidates: ["Joe", "Briana", "Jamal", "Ivan"]),
               Ballot(title: "Mayor",
                  description: nil,
                  candidates: ["Adrienne", "Moisha", "Dave", "Demtri"])
              ]
以及:


对于问题的第一部分,看起来您正在寻找多维数组——例如()。然后,对于第二部分,您可能会询问变量的“名称”,因为您希望需要按名称访问您创建的数组。但是,在多维数组中,您将通过索引访问它们。例如,像
ballot[0][1]
可以为您提供第一次投票的第二项。或者提供一个以数组作为值、以键作为变量名称的字典。感谢您、jnpdx、Joakim Danielson和Duncan C的帮助!我最初尝试使用多维字符串数组来解决这个问题,但遇到了我不知道如何解决的实现困难。我改变了我在问题中提出的基于变量的想法的方法,这使我能够很好地完成项目的后半部分(即投票制表和统计),但不能完成上半部分。考虑到您的意见,我回到绘图板,使用基于整数的多维数组,解决了我的问题。非常感谢。正如我在上述评论中所指出的,你的建议非常有用。感谢您的时间和专业知识!
for aBallot in ballots {
    print("Ballot titled \(aBallot.title) has candidates \(aBallot.candidates)")