在播放场的这段代码中,我git错误“模糊地使用'tan'”
let mytan = tan(2)
为什么这不起作用?
答案 0 :(得分:3)
您已找到解决方案,但问题是
为什么这不起作用?
我会尝试为问题添加解释。
与大多数数学函数一样,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
另一方面,默认情况下,2.0
等浮点字面值
解释为Double
,这就是为什么
let mytan = tan(2.0)
编译。
答案 1 :(得分:1)
我发现我必须以float而不是int的形式编写原语来修复它。像这样:
let mytan = tan(2.0)