【发布时间】:2014-10-12 10:16:18
【问题描述】:
我正在尝试找到一种方法来在我的 Swift 代码中包含 PI 常量。我已经在 import Darwin 的另一个答案中找到了帮助,我知道它可以让我访问 C 函数。
我还检查了Darwin 中的Math 包,发现了以下声明:
var M_PI: Double { get } /* pi */
所以,我假设有一种方法可以在代码中使用 PI,我只是不知道如何...
【问题讨论】:
我正在尝试找到一种方法来在我的 Swift 代码中包含 PI 常量。我已经在 import Darwin 的另一个答案中找到了帮助,我知道它可以让我访问 C 函数。
我还检查了Darwin 中的Math 包,发现了以下声明:
var M_PI: Double { get } /* pi */
所以,我假设有一种方法可以在代码中使用 PI,我只是不知道如何...
【问题讨论】:
使用 Swift 3 & 4,pi 现在被定义为浮点数类型 Double、Float 和 CGFloat 上的静态变量,因此不再需要特定的导入:
Double.pi
Float.pi
CGFloat.pi
还要注意,.pi 的实际类型可以由编译器推断出来。因此,在从上下文中可以清楚地看出您正在使用的情况下,例如CGFloat,您可以使用 .pi(感谢 @Qbyte 和 @rickster 在 cmets 中指出这一点)。
对于旧版本的 Swift:
M_PI 最初定义在 Darwin 中,但也包含在 Foundation 和 UIKit 中,因此导入其中任何一个都将为您提供正确的访问权限。
import Darwin // or Foundation or UIKit
let pi = M_PI
注意: 如 cmets 中所述,pi 也可以用作 Swift 中的 unicode 字符,所以你不妨这样做
let π = M_PI
alt + p 是创建π unicode 字符的快捷方式(在美式键盘上)。
【讨论】:
var π = M_PI
var 似乎是不恰当的。确定let pi = M_PI?
.pi 代替长格式。例如。 let x = CGFloat(42) * .pi
import Darwin 不需要所有 M_x 都可以通过 import Foundation 看到
(Xcode 版本 6.4 (6E35b))
【讨论】:
警告:不推荐使用“M_PI”:请使用“Double.pi”或“.pi”来获取正确类型的值并避免强制转换。
令人惊讶的是,.pi 也可以正常工作。 从 Swift 4.2.1、Xcode 10.1 开始,M_PI 已被弃用,这是我正在使用的当前版本。所以,使用 .pi 或 Double.pi
【讨论】: