zgadzam się z @MartinR że to wygląda na błąd kompilatora. Więc gdzie jest problem?
Moje eksperymenty wskazują na jednoargumentowy minus jako winowajcę. Zauważ, że nawet:
var i = -(3)
nie powiedzie się z:
error: ambiguous use of operator '-'
var i = -(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: CoreGraphics.CGFloat) -> CoreGraphics.CGFloat**
To proste wyrażenie:
var i = -(3 + 2)
nie powiedzie się z:
error: ambiguous use of operator '+'
var i = -(3 + 2)
^
Swift.+:2:13: note: found this candidate
public func +(lhs: Float, rhs: Float) -> Float
^
Swift.+:2:13: note: found this candidate
public func +(lhs: Double, rhs: Double) -> Double
^
Swift.+:2:13: note: found this candidate
public func +(lhs: Float80, rhs: Float80) -> Float80
^
CoreGraphics.+:2:13: note: found this candidate
public func +(lhs: CoreGraphics.CGFloat, rhs: CoreGraphics.CGFloat) -> CoreGraphics.CGFloat
Za każdym razem, cztery rodzaje Float, Pokój, Float80 i CoreGraphics.CGFloat są rodzaje Swift ma problemy z podjęciem decyzji, wśród. Dlaczego tylko te cztery? Dlaczego Int nie jest tam? Zwłaszcza, że Swift domyślnie traktuje literał całkowity jako Int
.
Możesz spróbować 'abs (-3) * -1'. –