Недавно я изучил опции в 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. Кстати, она до сих пор не замужем и живет в Нью-Йорке. Но это уже другая история…