Optionales Verketten mit Swift-Saiten
Mit optionaler Verkettung, wenn ich eine Swift-Variable habe
var s: String?
s kann nil oder eine in ein Optional eingebundene Zeichenfolge enthalten. Also habe ich versucht, die Länge zu ermitteln:
let count = s?.characters?.count ?? 0
Der Compiler möchte jedoch Folgendes:
let count = s?.characters.count ?? 0
Mein Verständnis der optionalen Verkettung ist, dass, sobald Sie mit der Verwendung von @ beginn?.
In einem gepunkteten Ausdruck werden die restlichen Eigenschaften optional angegeben und normalerweise von @ aufgerufe?.
, nicht.
.
So, ich habe ein bisschen weiter gegraben und es auf dem Spielplatz versucht:
var s: String? = "Foo"
print(s?.characters)
// Output: Optional(Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: 0x00000001145e893f, _countAndFlags: 3, _owner: nil)))
Das Ergebnis zeigt an, dasss?.characters
ist in der Tat eine optionale Instanz, die anzeigt, dasss?.characters.count
sollte illegal sein.
Kann mir jemand helfen, diesen Zustand zu verstehen?