Swift: Optional Chaining (Опциональная последовательность)

Чтобы не захламлять проверками на nil опционалов при попытке вызвать метод или получить/вызвать свойство, получить доступ к индексу — дана возможность добавив знак вопроса после метода/свойства/индекса продвигаться вглубь вызовов, не обращая внимание на возможный nil в любом месте по ходу следствия.

Этот код выдаст или нужное значение, или nil, т.к. по ходу следования у всех обьектов стоит знак вопроса.
object — встретив первым же значением nil — код перестанет выполнятьcя дальше и вернет nil
getData() — если метод вернет niltest будет присвоен nil и обращения к array не будет
array?[]? — имеет два вопросительных знака. Первый предусматривает ситуацию, что сам array может быть nil, второй — что конкретное значение array[3] может быть nil

Если хотя бы у одного элемента встречается знак вопроса — результат автоматически становится опционалом. В нашем случае test будет типа Swift.Optional

Если метод к которому обращаются не возвращает значения — результат вызова метода станет Swift.Optional<()>, его так же можно проверить на то, был ли он выполнение

Те же правила распространяются и на присвоение что свойства, что элемента посредством индекса. Учитывая, что присвоение — по сути вызов функции возвращающей void, мы получим что в обоих случая результатом присвоения будет ()?, и в случае неуспеха в переменную будет присвоен nil, на что можно проверить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *