Come ottenere la costante PI chimica in Swift


153

Sto cercando di trovare un modo per includere la costante PI nel mio codice Swift . Ho già trovato aiuto in un'altra risposta, per import Darwincui so che mi dà l'accesso alle funzioni C .

Ho anche controllato il Mathpacchetto Darwine ho trovato la seguente dichiarazione:

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

Quindi, suppongo che ci sia un modo per usare PI nel codice, non so proprio come ...

Risposte:


282

Con Swift 3 e 4 , pi è ora definita come variabile statica sui tipi numero in virgola mobile Double, Floate CGFloat, quindi nessuna importazione specifici sono più necessari:

Double.pi
Float.pi
CGFloat.pi

Si noti inoltre che il tipo effettivo di .pipuò essere dedotto dal compilatore. Quindi, nelle situazioni in cui è chiaro dal contesto che si sta utilizzando CGFloat, ad esempio , è possibile utilizzare .pi(grazie a @Qbyte e @rickster per averlo sottolineato nei commenti).

Per le versioni precedenti di Swift :

M_PIè originariamente definito in Darwinma è anche contenuto in Foundatione UIKit, quindi importare uno di questi ti darà il giusto accesso.

import Darwin // or Foundation or UIKit

let pi = M_PI

Nota: come notato nei commenti, pi può anche essere usato come carattere unicode in Swift, quindi potresti anche farlo

let π = M_PI

alt + pè la scorciatoia (sulle tastiere statunitensi) che creerà il πcarattere unicode.


5
Poiché Swift supporta Unicode, potresti anche farlovar π = M_PI
Cyrille,

23
Poiché pi è una costante, sembra perverso dichiararlo come a var. Sicuramente let pi = M_PI?
Grimxn,

2
Non hai bisogno di nulla di speciale - Alt-p è pi di default.
Grimxn,

3
Alt-P su una tastiera americana, suppongo? Sicuramente non sulla mia (dove invoca la finestra di stampa). Per favore, per favore, non scrivere caratteri unicode casuali nel codice. Non voglio che i miei colleghi vadano su Google come scrivere π ogni volta che lo trovano nel codice.
Sulthan,

2
Solo una nota: se il tipo di Pi può essere dedotto puoi anche usare al .piposto della forma lunga. Ad esempiolet x = CGFloat(42) * .pi
Qbyte il

15

import Darwin non è necessario tutti gli M_x sono visibili con import Foundation

(Xcode versione 6.4 (6E35b))


1

avviso: "M_PI" è obsoleto: utilizzare "Double.pi" o ".pi" per ottenere il valore del tipo corretto ed evitare il cast.

sorprendentemente, anche .pi funziona bene. M_PI è obsoleto a partire da Swift 4.2.1, Xcode 10.1, che è la versione corrente che sto usando. SO, usa .pi o Double.pi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.