Z Swift 3 & 4 , pi jest teraz zdefiniowany jako zmiennej statycznej na zmiennej typu numer punktu Double
, Float
a CGFloat
, więc nie są wymagane szczególne importuje więcej:
Double.pi
Float.pi
CGFloat.pi
Należy również zauważyć, że .pi
kompilator może wywnioskować rzeczywisty typ . Tak więc w sytuacjach, w których jasno wynika z kontekstu, którego używasz, np. CGFloat
Możesz po prostu użyć .pi
(dzięki @Qbyte i @rickster za wskazanie tego w komentarzach).
W przypadku starszych wersji Swift :
M_PI
jest pierwotnie zdefiniowane w Darwin
ale jest również zawarta 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żono w komentarzach, pi może być również używany jako znak Unicode w Swift, więc równie dobrze możesz
let π = M_PI
alt + p
to skrót (na klawiaturach amerykańskich), który utworzy π
znak Unicode.
var π = M_PI
var
. Na pewnolet pi = M_PI
?.pi
zamiast długiej formy. Np.let x = CGFloat(42) * .pi
import Darwin
nie jest potrzebne, wszystkie M_x są widoczne z rozszerzeniemimport Foundation
(Xcode wersja 6.4 (6E35b))
źródło
ostrzeżenie: „M_PI” jest przestarzałe: użyj „Double.pi” lub „.pi”, aby uzyskać wartość prawidłowego typu i uniknąć rzutowania.
O dziwo, .pi też działa dobrze. M_PI jest przestarzałe od Swift 4.2.1, Xcode 10.1, czyli obecnej wersji, której używam. SO, użyj .pi lub Double.pi
źródło