在此代码中,我在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可以解释为FloatDoubleCGFloat。因此,在
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)

编译。

10-08 11:18