2017-01-30 50 views
0

對於下列:遺留不斷侵犯* 2

struct Constants { 
    static let m2Pi = CGFloat(M_PI) * 2 
} 

SwiftLint 0.16.1警告我:

警告:傳統恆衝突:STRUCT範圍的常數是優選在傳統的全局常量上。 (legacy_constant)

請注意,我需要此值爲UIBezierPath.init(arcCenter center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)以獲得一個封閉的弧線。

+0

這似乎只是一個愚蠢的警告,我...作爲C開發人員,那些全局常量是非常重要的......如果你創建了一個枚舉或命名空間並使常量等於全局常量,它會在你指定全局常量的位置上抱怨它嗎? –

+1

@GradyPlayer代碼質量很重要。這不是一個愚蠢的警告。請注意,'M_PI'實際上是一個宏,因此在C中它可以轉換爲任何類型(它是一個文字)。在Swift中,你必須對它進行強制轉換,因此使用這個特定類型的已經給定的常量會更安全。將它們命名爲一個結構並刪除不需要的M_前綴(它不再是全局的)只是讓你的代碼更加一致。 – Sulthan

回答

6

在迅速3,PI現在這樣定義的:

CGFloat.pi 

您也可以這樣說:

Double.pi 
Float.pi