Bitte folgenden Code betrachten:Swift keep Bezug auf alte Array
func arrayEcludingDivingByP (p: Int, arrToCheck : [Int]) -> Array<Int>{
var tmp : [Int] = []
for (ob, index) in arrToCheck.enumerated() {
var isDividible : Bool = ob % p == 0 ? true : false
if (!isDividible){
tmp.append(ob)
}
}
return tmp
}
var p : Int = 2
func getSimpleNumbersArrayFromArray (p : Int, arrPassed : [Int]) -> Array <Int>{
var tmp : [Int] = []
tmp = arrPassed
for i in 0...5 {
tmp = arrayEcludingDivingByP(p: p+i, arrToCheck: tmp)
print("tmp array? \(tmp)")
}
return tmp
}
arrayEcludingDivingByP
Funktion einfach neues Array zurück, ohne Gegenstände, die für bestimmtes Multiplikator (p) ohne Teilung multipliziert.
getSimpleNumbersArrayFromArray contain loop for 6 iterates, that should output array, which Int objects are not dividible by 0...5 accordingly.
Aber irgendwie ist es immer referrence zu alter Array halten, die Anordnung von Zahlen von 1 bis 100. In Konsole es ausgegeben wird, folgende:
tmp array? [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97]
tmp array? [1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47]
tmp array? [1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 29, 30, 31]
tmp array? [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 23]
tmp array? [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17]
tmp array? [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13]
Warum ist es passiert? Es sollte in der zweiten Iteration keine geraden Zahlen enthalten, tut es aber.
Unklar was Sie fragen. – nayem
Wie ich verstehe, haben Sie eine Art Filter erstellt? Wenn Ihr Array 0 - 100 kommt, versuchen Sie, durch "p" zu teilen. Jeder Wert, der nicht teilbar ist, sollte für den nächsten Durchlauf entfernt werden, oder? Wenn ich recht habe, ist sein Problem, dass es in der nächsten Runde so aussieht, als würde es von Anfang an mit dem Array beginnen. z.B. das erste Array hat keine 2, das nächste hat es und so weiter mit anderen Werten. –