In Swift 4.1 konnte dies folgendermaßen erreicht werden:
prefix operator ++
postfix operator ++
extension Int{
static prefix func ++(x: inout Int)->Int{
x += 1
return x
}
static postfix func ++(x: inout Int)->Int{
x += 1
return x-1
}
}
//example:
var t = 5
var s = t++
print("\(t) \(s)")
Beachten Sie, dass diese Lösung trotz der Tatsache, dass sie den vorherigen Lösungen in diesem Beitrag ähnelt, in Swift 4.1 nicht mehr funktioniert und in diesem Beispiel. Beachten Sie auch, dass jeder, der oben erwähnt, dass + = ein Ersatz für ++ ist, den Operator nicht vollständig versteht, da ++ in Kombination mit der Zuweisung tatsächlich zwei Operationen sind, daher eine Verknüpfung. In meinem Beispiel:var s = t++
macht zwei Dinge: Weisen Sie s den Wert von t zu und erhöhen Sie dann t. Wenn das ++ vorher kommt, sind es die gleichen zwei Operationen, die in umgekehrter Reihenfolge ausgeführt werden. Meiner Meinung nach ist die Argumentation von Apple, warum dieser Operator entfernt werden soll (in früheren Antworten erwähnt), nicht nur eine falsche Argumentation, sondern ich halte es auch für eine Lüge, und der wahre Grund ist, dass sie ihren Compiler nicht dazu bringen konnten, damit umzugehen. Es gab ihnen Probleme in früheren Versionen, also gaben sie auf. Die Logik "zu kompliziert, um den Operator zu verstehen, daher entfernt" ist offensichtlich eine Lüge, da Swift Operatoren enthält, die weitaus komplizierter und viel weniger nützlich sind und nicht entfernt wurden. Auch die überwiegende Mehrheit der Programmiersprachen hat es. JavaScript, C, C #, Java, C ++ und viele mehr. Programmierer nutzen es gerne. Für wen es zu schwierig ist, diesen Operator zu verstehen,
Die Strategie hinter Swift ist einfach: Apple hält den Programmierer für dumm und sollte daher entsprechend behandelt werden.
Die Wahrheit ist, dass Swift, das im September 2014 gestartet wurde, inzwischen woanders sein sollte. Andere Sprachen sind viel schneller aufgewachsen.
Ich kann viele wichtige Fehler in der Sprache auflisten, von schwerwiegenden: wie nach Wert und nicht nach Referenz eingefügte Arrays bis hin zu nervigen: Variadische Parameterfunktionen können kein Array akzeptieren, was die ganze Idee dahinter ist. Ich glaube nicht, dass Apples Mitarbeiter sich andere Sprachen wie Java ansehen dürfen, damit sie nicht einmal wissen, dass Apple Lichtjahre zurückliegt. Apple hätte Java als Sprache übernehmen können, aber heutzutage ist Herausforderung keine Technologie, sondern Ego. Wenn sie IntelliJ geöffnet hätten, um Java zu schreiben, würden sie mit Sicherheit ihr Geschäftsverständnis schließen, dass sie zu diesem Zeitpunkt niemals aufholen können und werden.