2017-10-20 9 views
0

J'essaie donc de faire fonctionner une fonction d'écart type, mais je rencontre une erreur. Voici mon code:Swift: EXC_BAD_INSTRUCTION appelé lors de l'appel de la fonction

func standardDeviation(dataSet: [Double]) -> Double { 
let mean = dataSet.reduce(0, +)/Double(dataSet.count) 
var distances = [Double]() 
for number in dataSet { 
    let distanceFromMean = (dataSet[Int(number)] - mean) 
    distances.append(distanceFromMean * distanceFromMean) 
} 

return distances.reduce(0, +)/Double(dataSet.count) 
} 

Il génère l'erreur suivante:

Fatal Error: Index out of range

Alors, j'ai eu le sentiment qu'il avait quelque chose à faire quand je l'appelle le tableau dataSet, alors quand je regardais dans ce, J'ai trouvé cela comme une erreur

error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.

Répondre

0

number (un Double!) ne peut pas être un indice pour vous abonner dataSet, donc je suis tout à fait sûr que vous dire

let distanceFromMean = number - mean 

comme dans le motif Fast Enumeration la variable d'indice number est en fait égal à array[index]