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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage