2017-01-30 7 views
0

Для следующего:Наследие Постоянное нарушение для CGFloat (M_PI) * 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 разработчик, эти глобальные константы очень важны ... если вы сделали enum или пространство имен и сделали константу равной глобальной константе, будет ли она жаловаться на нее в том месте, где вы указали глобальную константу? –

+1

@ GradyPlayer Очень важно качество кода. Это не глупое предупреждение. Обратите внимание, что 'M_PI' на самом деле является макросом, поэтому в C его можно преобразовать в любой тип (это буквальный). В Swift вы должны использовать его, поэтому безопаснее использовать уже заданную константу с определенным типом. Имена, помещающие его в структуру и удаляющие префикс «M_», который не нужен (он больше не глобальный), просто делает ваш код более последовательным. – Sulthan

ответ

6

В быстрых 3, пи теперь определяется следующим образом:

CGFloat.pi 

Вы также можете получить его таким образом:

Double.pi 
Float.pi 
Смежные вопросы