Недавно я изучил опции в Swift. Вроде. Я до сих пор не уверен, что понял их правильно, поэтому расскажу о дополнительных опциях простыми словами.
Это история о девушке по имени Портной, которая очень хотела найти мужчину своей мечты. Однажды она открыла Tinder и нашла 4 новых совпадения: Бена, Патрика, Джона и Сэма.
let ben: String let patrick: String! let john: String? let sam: String?
Она была молода и любила загадки, поэтому Бен был для нее слишком скучен: она знала, что они будут встречаться год, а потом он сделает ей предложение руки и сердца. Патрик написал в своем профиле, что ищет жену. Она решила, что он слишком прямолинеен для нее. Парадоксальное женское сердце!
Но с Джоном и Сэмом все было иначе. Один был плейбоем, а второй был одиночкой. Она могла получить предложение или… ничего. Немного страшно, но интересно…
john = "Marry me, Tailor!"
or
john = nil
Конечно, она может просто использовать принудительное развертывание и притвориться, что все в порядке.
marry(john!)
Но в этом случае в одно прекрасное утро она может узнать, что Джон пропал — и ее сердце и жизнь будут разбиты.
Портной хотел когда-нибудь жениться, может быть, не сейчас, через несколько лет. Она точно не хочет становиться старой девой! Поэтому она решила пойти на свидание с Джоном. Красивое лицо, красивое место.
Быть или не быть?
Но как узнать его получше и не потратить молодость на сердцеедку? Портной решил погуглить.
Первый совет был "Просто спросите его, собирается он на вас жениться или нет". Так что если у мужчины есть желание жениться, вы можете начать встречаться с ним без каких-либо опасений.
if john != nil { let happyLife = john! }
Джон был потрясен и провел остаток вечера в молчании. Он пробормотал, что ему нужно подумать об этом. Конечно, он не позвонил ей на следующий день. И никогда больше. Иногда прямота не лучший друг.
Необязательная привязка: лучшие друзья
После этой даты Портной был разочарован и озадачен. Но остался Сэм. К счастью, она знала лучшего друга Сэма Тома. Поэтому она решила спросить его, собирается ли Сэм когда-нибудь жениться на ней.
if let tom = sam! { let weddingProposal = tom }
Конечно, в этой ситуации Том также вовлечен в их отношения, что нехорошо. Портной непреднамеренно причинил Тому боль, потому что она ему понравилась, и его гордость была подорвана.
Что делать? Она была сбита с толку и поэтому задала Тому расплывчатый вопрос, думал ли Сэм когда-нибудь о женитьбе.
if sam?.length > 0 { let weddingProposalLength = sam?.length }
В данном случае Тейлор не был уверен, имел ли Сэм когда-либо в виду ее в предложении о свадьбе или кого-то еще. Она начала думать, что эта цепочка проблем никогда не закончится!
План б??
Тейлор так устала от свиданий, что решила встретиться со своим старым другом Нилом Коалессингом. Он был влюблен в нее еще со школы. Но она относилась к нему как к запасному варианту и держалась на расстоянии. Может, пора стать больше, чем друзьями?
let nilCoalescing = "Marry me, Tailor!" let weddingProposal = sam ?? nilCoalescing marryAndLiveHappyLife(weddingProposal)
Это краткий обзор сложных взаимоотношений Tailor. Кстати, она до сих пор не замужем и живет в Нью-Йорке. Но это уже другая история…