let colorArray = [
UIColor.greenColor(),
UIColor.blueColor(),
UIColor.redColor(),
UIColor.orangeColor(),
UIColor.yellowColor()
]
5 Réponses :
Vous pouvez étendre array code> pour inclure une méthode pour renvoyer un tableau contenant les éléments du tableau d'origine pivoté par un élément: let z = colorArray.rotate(2)
// z is [.yellowColor(), .greenColor(), .blueColor(), .redColor(), .orangeColor()]
Cela s'écraserait avec un tableau vide
Vous pouvez itérer en manipulant l'index de démarrage.
iterate(colors, 3, { (color) -> () in println("color - \(color)")})
Je sais que cela pourrait être en retard. Mais le moyen le plus simple de faire pivoter ou de changer de matrice est
Obtenir une erreur: Impossible d'indiquer une valeur de type '[CGColor]' avec un index de type 'Countablerange
Ne change pas avec l'index négatif, c'est-à-dire l'autre sens!
court et clair Swift 3 & 4 strong> Solution que j'ai proposé: let colorArray = [
UIColor.red,
UIColor.orange,
UIColor.yellow,
UIColor.green,
UIColor.blue
]
let shiftedColorArray = [
UIColor.green,
UIColor.blue,
UIColor.red,
UIColor.orange,
UIColor.yellow
]
colorArray.shifted(by: 2) == shiftedColorArray // returns true
[1,2,3,4,5,6,7].shifted(by: -23) // returns [3,4,5,6,7,1,2]
J'aime l'optimisation sur votre solution. Est-il possible de refrorcer cette extension pour muter la matrice existante au lieu de créer un nouveau? @ Benno-Kress
Oui tout à fait. Cette extension contient les deux méthodes: Gist.github.com/bennokress/a12f967E809575BE3820C76578640143
Une variation de la réponse de @ Zizutg, qui peut changer dans les deux sens (positif et négatif)
Enlevez-vous simplement les couleurs avant la couleur que vous souhaitez commencer, puis simplement les ajouter à la fin de la matrice?