В чем разница между выражениями != и !variable?

operator
swift4

#1

есть такой код:

saveButton.isEnabled = !name.isEmpty

Почему в данном случае нельзя написать так:

saveButton.isEnabled != name.isEmpty

Ведь по логике это получается одно и то же?


#2

В первом варианте у вас получается операция “присваивание” противоположного значения.
А во втором операция сравнения “не равно”


#3

Спасибо!

Присваивание противоположного значения ведь можно только в том случае, если оно заранее определено. А если этого не сделано, то сложно сказать, что является противопоположным. И тогда уж точно первое будет одинаково со вторым.


#4

оно у вас определено

оно возвращает Bool, как и параметр

Унарный оператор ! перед Bool значением возвращает противоположное значение, поэтому неважно, какое там изначально.
Бинарный оператор != возвращает true, если сравниваемые значения неравны.

Это базовые вопросы, которы все разобраны в документации. Рекомендую прочитать главную страницу этого сайта


#5

Понятно, что это базовые вопросы, но просто прочитать учебник недостаточно, на таких вот примерах понимаешь более глубоко.

В данном случае я как-то упустил из виду, что мы имеем дело именно с булевыми значениями. Тогда, естественно, есть только одно противоположное значение.

Спасибо еще раз!


#6

А на ссылочку всё равно не клацнул ))) - там как раз раздел Базовые операторы :wink:


#7

ну почему же не клацнул, очень даже клацнул))