To powinno rozwiązać błąd:
func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat
{
return (CGFloat(M_PI) * (x)/180.0)
}
Powodem jest błąd występujący dlatego x
jest wyraźnie uznany za CGFloat
, natomiast M_PI
ma typ CDouble
, jak widać w oświadczeniu:
var M_PI: CDouble { get } /* pi */
Z tego powodu należy odrzucić M_PI
, aby wpisać CGFloat
, więc pasuje do typu x
(tak jak zrobiłem to w t on kod powyżej). W ten sposób nie ma konfliktu w działaniu na różnych typach.
Należy zauważyć, że wbrew temu, co zostało stwierdzone w innych odpowiedzi (oraz @Cezar skomentował), nie trzeba jawnie rzucić 180.0
do CGFloat
typu, ponieważ jest to dosłowne, i nie ma wyraźny typ, zostanie automatycznie przekonwertowany na CGFloat
bez konieczności ręcznego przesyłania.
To nie jest duplikat. Chociaż zgłaszany błąd jest taki sam, przyczyna jest tutaj o wiele bardziej zniuansowana niż nieporozumienie dotyczące bezpieczeństwa typu i typu wnioskowania. – Cezar
@Mani, proponuję spróbować wymyślić inny tytuł dla twojego pytania. W rzeczywistości powoduje to zamieszanie z domniemanym duplikatem i może spowodować, że pytanie zostanie zamknięte przez osoby, które głosują tylko na podstawie tytułu. – Cezar
@Cezar Zmieniłem swój tytuł, jeśli uważasz, że ten tytuł wprowadza zamieszanie, możesz edytować mój tytuł. – Mani