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 не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.