Mehrdeutige Verwendung des Operators '-' in Swift mit 'abs ()'

8

Ich versuche Folgendes zu tun:

%Vor%

oder

%Vor%

oder

%Vor%

oder

%Vor%

Aber ich bekomme eine Fehlermeldung, dass die Verwendung von Minus mehrdeutig ist. Warum?

    
TpoM6oH 12.12.2015, 12:41
quelle

2 Antworten

5

Das sieht für mich wie ein Compilerfehler aus, der Typ des Literals 3 sollte Int sein. Aber der Compiler beschwert sich

%Vor%

Sie können es mit einem expliziten Int als Parameter lösen:

%Vor%

oder mit einer Typannotation auf das Ergebnis:

%Vor%

Wie @vacawama bemerkt hat, gibt es mehr mögliche Lösungen. Das Übergeben von any Teilausdruck an Int macht den Compiler glücklich:

%Vor%     
Martin R 12.12.2015, 12:45
quelle
2

Ich stimme @MartinR zu, dass dies wie ein Compilerfehler aussieht. Wo ist das Problem?

Meine Experimente deuten darauf hin, dass unäres Minus der Schuldige ist. Beachten Sie, dass sogar:

%Vor%

schlägt fehl mit:

%Vor%

Dieser einfache Ausdruck:

%Vor%

schlägt fehl mit:

%Vor%

Jedes Mal sind die vier Typen Float , Double , Float80 und CoreGraphics.CGFloat die Typen Swift hat Schwierigkeiten, sich zu entscheiden. Warum nur diese vier? Warum ist Int nicht drin? Besonders, da Swift standardmäßig ein Integer-Literal als Int behandelt.

    
vacawama 12.12.2015 15:55
quelle

Tags und Links