Опциональное сцепление со струнами Swift

С необязательной цепочкой, если у меня есть переменная Swift

var s: String?

s может содержать ноль или строку, обернутую в необязательный. Итак, я попытался это получить его длину:

let count = s?.characters?.count ?? 0

Тем не менее, компилятор хочет это:

let count = s?.characters.count ?? 0

Мое понимание необязательной цепочки заключается в том, что, как только вы начнете использовать?. в точечном выражении остальные свойства становятся необязательными и обычно доступны?.не..

Итак, я вырыл немного дальше и попробовал это на детской площадке:

var s: String? = "Foo"
print(s?.characters)
// Output: Optional(Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: 0x00000001145e893f, _countAndFlags: 3, _owner: nil)))

Результат показывает, чтоs?.characters действительно необязательный экземпляр, указывающий, чтоs?.characters.count должно быть незаконным.

Может ли кто-нибудь помочь мне понять это положение вещей?

Ответы на вопрос(2)

Ваш ответ на вопрос