2014-10-12 13 views
124

Próbuję znaleźć sposób, aby włączyć stałą PI w moim kodzie Swift. Znalazłem już pomoc w innej odpowiedzi, na import Darwin, którą znam, daje mi dostęp do funkcji C.Jak uzyskać matematyczną stałą PI w Swift

Ja również sprawdzone pakiet Math w Darwin i natknąłem się na następującą deklarację:

var M_PI: Double { get } /* pi */

Więc zakładam istnieje sposób, aby użyć PI w kodzie, po prostu nie wiem jak ...

Odpowiedz

230

z Swift 3, PI jest teraz zdefiniowane jako zmiennej statycznej na zmiennoprzecinkowych typów numerów Double, Float i CGFloat, więc nie są wymagane szczególne importuje więcej:

Double.pi 
Float.pi 
CGFloat.pi 

Należy również pamiętać, że rzeczywisty typ .pi można wywnioskować przez kompilator. Tak więc w sytuacjach, w których wynika to z kontekstu, z którego korzystasz, np. CGFloat, możesz po prostu użyć .pi (dzięki @Qbyte i @rickster za wskazanie tego w komentarzach).

Dla starszych wersji Swift:

M_PI jest pierwotnie zdefiniowane w Darwin ale jest również zawarte w Foundation i UIKit, więc importowanie każdy z nich daje prawo dostępu.

import Darwin // or Foundation or UIKit 

let pi = M_PI 

Uwaga: Jak zauważył w komentarzach, PI może być również używany jako unicode postacią Swift, więc równie dobrze można zrobić

let π = M_PI 

alt + p jest skrót (na Klawisze US), które stworzą znak Unicode π.

+5

Jak Swift obsługuje standard Unicode, można również zrobić 'var π = M_PI' – Cyrille

+21

jako PI jest stała, wydaje się perwersyjna deklaracja jako "var". Na pewno 'let pi = M_PI'? – Grimxn

+0

@Cyrille brzmi całkiem fajnie, ale czy nie oznaczałoby to kopiowania i wklejania za każdym razem, gdy chcemy się do niego odwoływać? – Stavash

15

import Darwin nie jest potrzebna wszystkim M_x są widoczne z import Foundation

(wersja Xcode 6.4 (6E35b))