2016-01-27 4 views
-1

Je fais une calculatrice et j'ai décidé d'ajouter quelques opérations de plus que la norme 4. En essayant d'implémenter sin et cos j'ai rencontré le problème suivant.Comment implémenter sin() dans une calculatrice rapide?

@IBAction func evaluate(sender: AnyObject) { 
    secondNumber = Int(Screen.text!)! 
    if operation == "+" { 
     result = firstNumber + secondNumber 
    } else if operation == "-" { 
     result = firstNumber - secondNumber 
    } else if operation == "X" { 
     result = firstNumber * secondNumber 
    } else if operation == "/" { 
     result = firstNumber/secondNumber 
    } else if operation == "%" { 
     result = firstNumber % secondNumber 
    } else if operation == "^" { 
     result = firstNumber^secondNumber 
    } else if operation == "Sin" { 
     result = sin(degToRad(Double(firstNumber))) 
    } 

où degToRad est défini comme

func degToRad(degrees: Double) -> Double { 
// M_PI is defined in Darwin.C.math 
return M_PI * 2.0 * degrees/360.0 

}

Je reçois l'erreur suivante sur la ligne de péché.

« Ambigu référence au membre « péché » »

Pourquoi est-ce et comment se produisant je vais sur l'utilisation de péché? J'ai importé Darwin, donc je ne crois pas que ce soit le problème, je suis encore très novice, alors je suis sûr que je fais quelque chose de mal, mais toute aide serait très appréciée.

+2

Avez-vous essayé self.sin? (il peut s'agir d'un problème de portée) – DeyaEldeen

+0

comment votre résultat est-il déclaré? – user3441734

Répondre

1

Si, comme @zazu suggère, il est un problème de cadrage, vous pouvez préciser la portée avec:

result = Foundation.sin(...) 
+0

'Darwin.sin' fonctionne également, mais' Foundation.sin' fonctionnera indépendamment de la plate-forme, où 'Darwin.sin' ne fonctionnera probablement pas sur les plates-formes non-Darwin, c'est-à-dire Linux et Windows. –

+0

Il est également vrai, cependant, que nous devons savoir comment 'result' est déclaré. Malheureusement, l'OP a raccroché le téléphone ... – matt