J'essaie de parcourir deux tableaux de tailles potentiellement différentes et de composer un nouveau tableau d'éléments sélectionnés au hasard (pour le croisement dans un algorithme génétique) (childGeneCount est juste le longueur du tableau le plus long).Scala pour/yield s'exécute mais ne se termine pas
Dans l'extrait de code suivant, chaque gène.toString se connecte, mais mon code ne semble pas exécuter le dernier journal. Quelle bêtise je fais?
val genes = for (i <- 0 to childGeneCount) yield {
val gene = if (Random.nextBoolean()) {
if (i < p1genes.length) {
p1genes(i)
} else {
p2genes(i)
}
} else {
if (i < p2genes.length) {
p2genes(i)
} else {
p1genes(i)
}
}
Logger.debug(gene.toString)
gene
}
Logger.debug("crossover finishing - never gets here??")
Nouveau à scala, et serait heureux pour une claque sur le poignet accompagné d'un « faire de cette façon tout à fait différente au lieu » le cas échéant.
si' childGeneCount' est longueur du tableau plus, vous devez utiliser '0 jusqu'à la place childGeneCount'' 0 à childGeneCount'. 'array (length)' soulève une exception IndexOutOfBoundsException. – harry0000