Vielleicht ist dies ein Xcode 8 Beta Problem jedoch vor 2.2 die var
Schlüsselwort ist erlaubt Parameter in Funktion Signaturen vorangestellt wird:Wie können veränderbare Parameter in Verschlüssen mit Swift> 2.2 bezeichnet werden?
func (var stringName: String) { ... }
Dies hat statt der dort sein wenig Vorteil gegenüber inout
veraltet seitdem
func (stringName: inout String) { ... }
ich habe folgendes in einem map
Schließung versucht, und obwohl ich als eine deprecation Warnung erhalten keine milde erwartete ich sollte, der Fehler war eher ein segmentation fault: 11
Der Fehler tritt auf, sobald ich versuche, die (mutmaßlich veränderliche) Variable word
zu mutieren.
Ich habe andere Variation versucht, z. mit inout
let demoString = ["hi", "there", "world"].map { (word: inout String) -> String in
let firstChar = word.remove(at: word.startIndex)
}
Aber der Compiler beschwert sich, dass diese fälschlicherweise die Unterschrift des Verschlusses insgesamt ändert sich und wird nicht kompiliert.
Offensichtlich ist die Abhilfe einfach die Variable auf einem lokalen innerhalb des Verschlusses zu kopieren:
let demoString = ["hi", "there", "world"].map { (word) -> String in
let tempWord = word
let firstChar = tempWord.remove(at: tempWord.startIndex)
}
aber ich bin daran interessiert zu wissen, ob diese Funktionalität erwartet wird &, ob es ist eine Möglichkeit, einen Parameter mutieren, der direkt in einen Abschluss übergeben wurde?
Hat sich Ihre Frage beantwortet? – Alexander