Существует ли различие между ДА/НЕТ, TRUE/ЛОЖЬ и истинный/ложный в цели-c?

Вы можете сделать это с помощью простого цикла (я использовал title для определения сходства между элементами, но вы можете изменить это):

$arr = array(["title" => "Abercarn RFC", "category"=> "Club"], ["title" => "other title", "category"=> "BlaBla"], ["title" => "Abercarn RFC", "category"=> "Seniors"]);

$res = array();
foreach($arr as $e) {
    if (isset($res[$e["title"]]))
        $res[$e["title"]]["category"] .=   ", " . $e["category"];
    else $res[$e["title"]] = $e;
}

Если вы хотите удалить ключ массива, вы можете использовать [ 112].

$res будет вашим желанием.

150
задан Costique 21 January 2012 в 18:49
поделиться

4 ответа

Нет никакого практического различия , обеспечил , Вы используете BOOL переменные в качестве булевских переменных. C обрабатывает булевы выражения на основе того, оценивают ли они к 0 или не 0. Так:

if(someVar ) { ... }
if(!someVar) { ... }

означает то же как [1 110]

if(someVar!=0) { ... }
if(someVar==0) { ... }

, который является, почему можно оценить любой тип примитива или выражение как булев тест (включая, например, указатели). Обратите внимание, что необходимо сделать первого, не последнего.

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

Значительно, никогда не тестируйте булевские переменные с помощью символьного сравнения - это не только опасно, потому что someVar мог быть присвоен ненулевое значение, которое не является ДА, но, по-моему, что еще более важно, этому не удается выразить намерение правильно:

if(someVar==YES) { ... } // don't do this!
if(someVar==NO ) { ... } // don't do this either!

, Другими словами, используйте конструкции, поскольку они предназначаются и документируются, чтобы использоваться, и Вы спасете себя от мира вреда в C.

81
ответ дан Lawrence Dol 23 November 2019 в 22:20
поделиться

Вы могли бы хотеть прочитать ответы на этот вопрос . Таким образом, в Objective C (из определения в objc.h):

typedef signed char        BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used.
#define OBJC_BOOL_DEFINED


#define YES             (BOOL)1
#define NO              (BOOL)0
14
ответ дан Community 23 November 2019 в 22:20
поделиться

Я думаю, что они добавляют ДА/НЕТ, чтобы быть более очевидными во многих случаях. Например:

[button setHidden:YES];

звуки лучше, чем

[button setHidden:TRUE];
0
ответ дан Qix 23 November 2019 в 22:20
поделиться

Нет, ДА/НЕТ другой способ относиться к TRUE/ЛЖИ (1/0)

-7
ответ дан Qix 23 November 2019 в 22:20
поделиться