ich dieses Stück Code haben zu vermeiden, die großen Werke und tut genau das, was ich will es tun:Nicht sicher, wie hier Duplizieren Code
if condition1 {
array1 += [array1[i-n]]
} else {
array1 += [Int (arc4random_uniform(7))]
if array1[i] >= array1[i-n] {
array1[i] += 1
}
} //same logic, different condition and array
if condition2 {
array2 += [array2[i-n]]
} else {
array2 += [Int (arc4random_uniform(7))]
if array2[i] >= array2[i-n] {
array2[i] += 1
}
}
Aber ich mache genau die gleiche Sache zweimal, nur mit einer anderen Bedingung und anderen Array. Wie vermeide ich es, die Logik zu duplizieren? Ich habe versucht, es die Verpackung als ein Array von zwei Tupeln up:
[ (condition1, array1) , (condition2, array2) ]
und ich habe, dass ein in for-Schleife:
for tuple in [ (condition1, array1) , (condition2, array2) ] {
var (condition, array) = tuple
if condition {
array += [array[i-n]]
} else {
array += [Int (arc4random_uniform(7))]
if array[i] >= array[i-n] {
array[i] += 1
}
}
}
und kompiliert, aber es scheint, als ob das Array kopiert wurde, in Die Änderung von "array" hatte keine Auswirkung auf "array1" oder "array2". Ich habe andere Varianten davon mit tuple.0 und Tuple.1-Notation ausprobiert, konnte das aber nicht kompilieren. Also habe ich versucht NSArrays anstelle von nativen Swift-Arrays zu verwenden ... aber ich konnte nicht herausfinden, wie man das richtig macht, und dachte auf jeden Fall, dass es einen einfacheren Weg geben muss.
Gibt es eine prägnante Möglichkeit, meinen ursprünglichen Code zu wiederholen, um die Logik nicht zu duplizieren?
Sorry für die Mischung mit der Migration früher auf. Der Beitrag wurde wieder geöffnet. –
Sollte dies nicht auf Codereview sein, da es funktionsfähig ist und nicht zu ineffizient? – user2366842