Опциональное сцепление со струнами 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
должно быть незаконным.
Может ли кто-нибудь помочь мне понять это положение вещей?