Swift 如何使用数组存储每轮分数

Swift 如何使用数组存储每轮分数,swift,Swift,我希望每轮都以编程方式创建一个新数组来存储该轮分数。所以说我有 var roundNumber = 3 var team1Score = 5 var team2Score = 7 我会将这些存储在数组中 var scores = [Int]() scores.append(team1Score) scores.append(team2Score) print (scores) 我将如何动态更改名称,然后存储该轮的分数,以便稍后加载它们。或者将该数组存储到另一个数组中并创建一个新数组,以便我

我希望每轮都以编程方式创建一个新数组来存储该轮分数。所以说我有

var roundNumber = 3
var team1Score = 5
var team2Score = 7
我会将这些存储在数组中

var scores = [Int]()

scores.append(team1Score)
scores.append(team2Score)
print (scores)

我将如何动态更改名称,然后存储该轮的分数,以便稍后加载它们。或者将该数组存储到另一个数组中并创建一个新数组,以便我以后调用它并用当前轮数分数填充新数组,而无需键入每个新数组?

我更喜欢使用结构数组,如下所示

struct Result {
    let round: Int
    let team1Score: Int
    let team2Score: Int
}

var results = [Result]()

// round 1
let result = Result(round: 1, team1Score: 7, team2Score: 5)
results.append(result)

// round N or maybe could be done in loop
let resultN = Result(round: 2, team1Score: 17, team2Score: 10)
results.append(resultN)

我想这就行了。

你可以用字典和元组来描述你想要的东西。 将每轮得分存储在元组中:

var round1 = (team1score: 1, team2score: 3)
然后创建一个字典(dict)来存储元组,其中包含与之关联的名称:

var scores: [String: (team1score: Int, team2score: Int)] = [:]
scores["1"] = round1

var anotherRound = (team1score: 12, team2score: 32)
scores["some round"] = anotherRound

print (scores)
如果需要的话,您可以定义字典,将轮数用作键。然后代码看起来像:

var round1 = (team1score: 1, team2score: 3)
var scores: [Int: (team1score: Int, team2score: Int)] = [:]
scores[1] = round1

var anotherRound = (team1score: 12, team2score: 32)
scores[4] = anotherRound

print (scores)
对于处理分数数据,您可以轻松迭代:

for (round, score) in scores {
    print("round \(round) had winner score \(max(score.team1score,score.team2score))")
}

听起来你应该开始创建类和结构了。将两支球队的得分存储在同一个数组中肯定会导致问题,并且将来很难理解。为什么不创建一个
Round
类,同时保存两个团队的分数,并存储
Round
s数组?您所说的“如何动态更改名称”到底是什么意思?什么名字?当然,听起来你需要一个结构数组。当你说“或者可以在循环中完成”时,你知道你将如何去做吗。创建名为result+(RoundNumber)的数组,这样当您点击“下一轮”时,RoundNumber+=1,然后相应地标记数组?好的,所以我创建了一个名为
roundCall()
的func,该函数的作用是
roundCall=“results”+String(RoundNumber)
是否有方法使用此var roundCall中的数据创建新数组?
for (round, score) in scores {
    print("round \(round) had winner score \(max(score.team1score,score.team2score))")
}