Что означает этот тип «если»? - PullRequest
0 голосов
/ 28 мая 2011

Я читал некоторые книги о какао, поэтому я могу узнать больше, но у меня не так ясно, что означают эти типы «если»:

if(!something)
if(something)

И я полагаю, что:

if (something !=nil)

Означает, что если чего-то не существует, верно?

Спасибо:)

Ответы [ 3 ]

8 голосов
/ 28 мая 2011

В C все неравное NULL или 0 считается true.

Таким образом

if (!something)

идентично

if (!(something != nil))

и, следовательно, идентичен

if (something == nil)

в случае объектов Objective-C (поскольку nil в основном NULL).

Таким образом, if (something) - это, по сути, сокращение для if (something != nil).
И if (!something) - это, по сути, сокращение для if (something == nil).

Для указателей без Objective C вы можете просто заменить nil на NULL. (nil в любом случае является более или менее единственным синтаксическим сахаром.)

Вы также можете использовать это, чтобы проверить, не является ли целое число неравным 0:
Таким образом, условие if ([myArray count]) равно true, если myArray не пусто.

0 голосов
/ 28 мая 2011

Это общий синтаксис для большинства языков на Си. Вам нужно понять, что оператор if проверяет выражение в параграфах как ложное (ноль) или истинное (1 или не ноль). Итак, когда вы говорите «если (что-то)», вы в основном спрашиваете, проверить ли это: 1. true или false (для логических выражений); 2. Ноль или не ноль (для арифметических выражений); 3. Нулевой или действительный адрес (для указателей, строк и т. Д.).

Теперь вам нужно помнить, что "!" Оператор используется для отрицания выражения, то есть побитового изменения каждого бита «0» в результате на «1» и наоборот. Итак, в основном вы проверяете, является ли отрицательный результат истинным или ненулевым.

Короче говоря, вы используете «если (что-то)», когда хотите, чтобы фрагмент кода выполнялся, когда «что-то» истинно или не равно нулю. Вы используете «если (! Что-то)», когда хотите, чтобы ваш фрагмент кода выполнялся, когда «что-то» ложно или равно нулю.

0 голосов
/ 28 мая 2011

Предполагая, что что-то является указателем на объект NSObject.

if(something)

Возвращает YES, если что-то не является указателем, отличным от nil

if(!something)

Возвращает YES, если что-то равно nil.Это в данном случае, потому что something равен нулю, а ! (оператор not) инвертирует это, чтобы стать истинным,

if(something) совпадает с if(something != nil).Но большинство программистов, которых я знаю, думают, что это тавтология, и предпочитают более короткое выражение.

Пока я в этом - вы можете увидеть это как if(nil != something).Причина этого заключается в том, что если случайно вы напишите = вместо !=, это вызовет ошибку, поскольку вы не можете установить значение на ноль, но если это было наоборот, и вы неправильно написалиусловие, это установит значение чего-либо равным nil, что может не соответствовать тому, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...