С дополнительной цепочкой, если у меня есть переменная Swift
var s: String?
s может содержать nil или String, завернутый в Необязательный. Итак, я попробовал это, чтобы получить его длину:
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
должен быть незаконным.
Может кто-нибудь помочь мне понять это положение вещей?