Questo dovrebbe risolvere l'errore:
func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat
{
return (CGFloat(M_PI) * (x)/180.0)
}
Il motivo si verifica l'errore è dovuto al fatto x
è esplicitamente dichiarato di essere un CGFloat
, mentre M_PI
ha il tipo CDouble
, come si vede nella dichiarazione:
var M_PI: CDouble { get } /* pi */
a causa di questo, è necessario lanciare M_PI
digitare CGFloat
in modo che corrisponda al tipo di x
(come ho fatto in t codice sopra). In questo modo, non c'è conflitto nell'operare su tipi diversi.
nota che, contrariamente a quanto affermato in altre risposte (e come @Cezar commentato), non c'è bisogno di lanciare esplicitamente 180.0
al CGFloat
tipo, perché è un letteralmente, e non ha un tipo esplicito, quindi verrà automaticamente convertito in CGFloat
senza bisogno di un cast manuale.
Questo non è un duplicato. Mentre l'errore lanciato è lo stesso, il motivo sottostante qui è molto più sfumato di un fraintendimento di tipo sicurezza e tipo di inferenza. – Cezar
@Mani, ti suggerisco di provare a inventare un titolo diverso per la tua domanda. Così com'è, provoca confusione con il presunto duplicato e potrebbe far chiudere la tua domanda da persone che votano solo in base al titolo. – Cezar
@Cezar Ho modificato il mio titolo, se ritieni che questo titolo faccia confusione, sentiti libero di modificare il mio titolo. – Mani