Стремительный восклицательный знак перед текстом - PullRequest
0 голосов
/ 26 сентября 2018

В этом уроке, над которым я сейчас работаю, написано, что я должен отключить кнопку «Сохранить», пока в текстовом поле не появится какое-либо значение.Вот код:

saveButton.isEnabled = !text.isEmpty

Означает ли восклицательный знак перед text.isEmpty, что кнопка сохранения включена, если текст не пустой, как! = Означает, не равно?Я знаю, что восклицательный знак означает принудительное развертывание, но я думал, что вы поставили восклицательный знак после текста.Кстати (я проверил это, и он работает, как говорится в учебнике)

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Восклицательный знак перед text.isEmpty называется Логическим оператором NOT , он инвертирует логическое значение.

saveButton.isEnabled = !text.isEmpty

означает, что если text пустоsaveButton будет не включенным, и наоборот.

Чтобы было понятнее, если мы попытались перевести его как оператор if, он должен выглядеть следующим образом:

if text.isEmpty {
    saveButton.isEnabled = false
} else {
   saveButton.isEnabled = true
}
0 голосов
/ 26 сентября 2018

Восклицательный знак является как постфиксным оператором (и, как вы сказали, оператором развертывания силы, использованным таким образом), так и префиксным оператором.Последнее является логическим отрицанием, поэтому, когда text является пустой строкой, text.isEmpty имеет значение true и отрицает ее восклицательным знаком перед тем, что дает !text.isEmpty, что неверно, отключая кнопку сохранения.

...