出于安全原因,Swift 中没有隐式类型转换。您必须转换deg为Float. 字面量没有隐式类型,可以充当多种不同类型,但是通过首先启动除法,类型在它可以由 的类型决定之前被选择deg。因此,您还必须转换结果M_PI/180.0:
func degToRad(deg: Int) -> Float {
return Float(deg) * Float(M_PI / 180.0)
}
并有可能用这种语言更多地吸引你。这是 AngularMeasure 的一个方便的枚举:
enum AngularMeasure {
case Degrees(CGFloat)
case Radians(CGFloat)
var degrees: CGFloat {
switch (self) {
case let .Degrees(value):
return value
case let .Radians(value):
return value * CGFloat(180.0 / M_PI)
}
}
var radians: CGFloat {
switch (self) {
case let .Degrees(value):
return value * CGFloat(M_PI / 180.0)
case let .Radians(value):
return value
}
}
}
var measure : AngularMeasure = .Degrees(180)
println(measure.radians) // 3.14159274101257
编辑:
随着您的更新,您试图将实例方法作为类方法调用。您需要将您的方法定义为类方法:
class func degToRad(deg:Double) -> CGFloat {
return CGFloat(deg*(M_PI/180.0))
}
同样,这是一个可怕的编译器错误。