在此代码中,我在git错误中出现“错误使用'tan'”
let mytan = tan(2)
为什么这不起作用?
最佳答案
您已经找到了解决方案,但是由于您的问题是
为什么这不起作用?
我将尝试为该问题添加解释。
像大多数数学函数一样,tan()
对于各种
浮点类型:
public func tan(x: Float) -> Float
public func tan(_: Double) -> Double
public func tan(x: CGFloat) -> CGFloat
所有这些浮点类型都符合
IntegerLiteralConvertible
协议,这意味着2
可以解释为Float
,Double
或CGFloat
。因此,在let mytan = tan(2)
编译器无法决定使用哪个:
error: ambiguous use of 'tan' let mytan = tan(2) ^ Darwin.tan:2:13: note: found this candidate public func tan(x: Float) -> Float ^ Darwin.tan:1:13: note: found this candidate public func tan(_: Double) -> Double ^ CoreGraphics.tan:2:13: note: found this candidate public func tan(x: CGFloat) -> CGFloat
On the other hand, a floating point literal like 2.0
is by defaultinterpreted as a Double
, and that is why
let mytan = tan(2.0)
编译。