IMO, опциональные строки и пустые строки иногда могут быть взаимозаменяемы.
Предположим, у нас есть класс человека, он имеет свойство name
. В этом случае лицо должно иметь имя, поэтому необязательные и пустые строки взаимозаменяемы (вы можете использовать их). Вы можете использовать nil
или ""
, чтобы указать, что у человека нет имени. Они означают то же самое. Вы можете объявить константу тоже:
let NoName = ""
И вы можете просто проверить его с этим очень абстрактной постоянной, а не nil
, что немного меньше реферата.
С другой стороны, иногда вы должны использовать опциональный. И именно тогда nil
и ""
имеют разные значения в контексте. Давайте также будем использовать класс нашего человека, чтобы проиллюстрировать это. Класс человека имеет свойство, называемое dogName
. Если у него нет собаки, это nil
. Если он/она имеет собаку, но не дал ей имя, это пустая строка. И если у него/нее есть собака и дал ей имя, это будет "fido"
или некоторые другие имена. В этом случае nil
означает, что у него нет собаки, а ""
означает, что у его/ее собаки нет имени. У них есть разные значения!
Заключение: когда нуль и пустая строка имеют одинаковое значение, используйте опционально опционально.Когда нуль и пустая строка имеют разные значения, используйте опцию.
Спасибо, что пример собаки имеет смысл. Это то, что я искал. – runios
Если вы считаете, что мой ответ отвечает на ваш вопрос, пожалуйста, подумайте о том, чтобы принять его, нажав на этот галочку! @runios – Sweeper
Да, да. Пока я чувствую, что пример Николая ближе к программированию. Я тикаю твою, как ты ее дал. – runios