Quiero crear una nueva matriz mediante programación cada ronda para almacenar las puntuaciones de las rondas. Entonces di que tengo

var roundNumber = 3
var team1Score = 5
var team2Score = 7

Y los almacenaría en una matriz

var scores = [Int]()

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

¿Cómo cambiaría dinámicamente el nombre y luego almacenaría los puntajes de esa ronda para poder cargarlos en otro momento? ¿O almacenar esa matriz en otra matriz y crear una nueva para poder invocarla más tarde y completar la nueva matriz con los puntajes de las rondas actuales sin escribir cada nueva matriz?

1
Baker2795 27 dic. 2016 a las 18:12

3 respuestas

La mejor respuesta

Prefiero usar una matriz de estructuras, algo como a continuación

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)
1
xmhafiz 27 dic. 2016 a las 15:22

Puedes usar un diccionario y tuplas para lo que pareces estar buscando. Almacene el puntaje de cada ronda en una tupla:

var round1 = (team1score: 1, team2score: 3)

Luego, crea un diccionario (dict) para almacenar la tupla con el nombre que asociaste:

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

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

print (scores)

Puede definir el diccionario para usar el número de la ronda como clave, si eso es lo que necesita. Entonces el código se vería así:

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)

Para hacer cosas con los datos de puntajes, puede iterar fácilmente:

for (round, score) in scores {
    print("round \(round) had winner score \(max(score.team1score,score.team2score))")
}
0
PO Bengtsson 27 dic. 2016 a las 15:46
class ScoreCard{
    var round:Int?
    var player1Score:Int?
    var player2Score:Int?
}
var s = [ScoreCard]()
let scoreCard = ScoreCard()
scoreCard.round = 1
scoreCard.player1Score = 10
scoreCard.player2Score = 20
s.append(scoreCard)

Esto hará el trabajo, supongo.

0
Aman Gupta 27 dic. 2016 a las 15:23