斯威夫特 - 操场:数学函数模糊地使用棕褐色

时间:2016-05-31 11:40:36

标签: ios swift

在播放场的这段代码中,我git错误“模糊地使用'tan'”

let mytan = tan(2)

为什么这不起作用?

2 个答案:

答案 0 :(得分:3)

您已找到解决方案,但问题是

  

为什么这不起作用?

我会尝试为问题添加解释。

与大多数数学函数一样,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

另一方面,默认情况下,2.0等浮点字面值 解释为Double,这就是为什么

let mytan = tan(2.0)

编译。

答案 1 :(得分:1)

我发现我必须以float而不是int的形式编写原语来修复它。像这样:

let mytan = tan(2.0)