Alles, was ich tun muß, ist ein neues Projekt in Swift zu starten und zu main.swift
inout Parameter in Schließung stürzen den Swift-Compiler
struct Foo {
let bar: (inout baz: String) ->()
}
hinzufügen Als ich zu bauen versuche ich eine Fehlermeldung erhalten:
Command failed due to signal: Segmentation fault: 11
Mache ich etwas falsch?
Ich dachte, dass vielleicht inout
Parameter in Schließungen werden nicht unterstützt, aber wenn ich einen Verschluss wie so definieren:
let baz: (inout baz: String) ->() = { baz in
baz += "x"
return
}
oder sogar
var baz: (inout baz: String) ->()?
es kompiliert und läuft OK
Ich öffnete ein Ticket in Apple Bug Reporter. Ich denke, es ist ein Fehler. Swift Compiler ist jetzt ein kleiner Buggy. – Shuo
In Ihrem ersten Beispiel kann der Typ vom Compiler nicht gefunden werden. In Ihrem zweiten Beispiel kann der Compiler es aufgrund der Tatsache finden, dass Sie indirekt definiert haben. Im letzten Beispiel ist es nur optional, so dass die Existenz immer wahr ist. – Alex
Sie sind richtig; das schlägt fehl. –