gpt4 book ai didi

swift - 在带有 '-' 的 Swift 中模糊使用运算符 'abs()'

转载 作者:IT王子 更新时间:2023-10-29 05:51:03 31 4
gpt4 key购买 nike

我正在尝试执行以下操作:

var i = -(abs(-3))

var i = -abs(-3)

var i = -abs(3)

var i = -(abs(3))

但我收到一条错误消息,指出 minus 的使用不明确。为什么?

最佳答案

对我来说,这看起来像是一个编译器错误,即文字 3 的类型应该是 Int。但是编译器提示

error: ambiguous use of operator '-'
var i = -(abs(-3))
^
Swift.-:2:20: note: found this candidate
prefix public func -(x: Float) -> Float
^
Swift.-:2:20: note: found this candidate
prefix public func -(x: Double) -> Double
^
Swift.-:2:20: note: found this candidate
prefix public func -(x: Float80) -> Float80
^
CoreGraphics.-:2:20: note: found this candidate
prefix public func -(x: CGFloat) -> CGFloat

你可以用一个明确的 Int 作为参数来解决它:

var i = -(abs(-Int(3)))

或者在结果上加上类型注释:

var i : Int = -(abs(-3))

正如@vacawama 所注意到的,有更多可能的解决方案。将 任何 子表达式转换为 Int 让编译器满意:

var i1 = -(abs(-(3 as Int)))
var i2 = -(abs((-3) as Int))
var i3 = -(abs(-3) as Int)
var i4 = -(abs(-3)) as Int

关于swift - 在带有 '-' 的 Swift 中模糊使用运算符 'abs()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239941/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com