Запятая в Objective-C

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

[controller release], controller = nil; 

Я использую ARC, поэтому не использовал release, но я сам протестировал следующий код и обнаружил, что он скомпилирован и работает нормально.

NSObject *a = [NSObject new];
[a copy], a=nil;

У меня сложилось впечатление, что запятая использовалась только для разделения списков и нескольких назначений одного типа:

NSArray *a = @[@"1", @"two", /*etc*/]; 
int a, b, c, d;

Актуальный вопрос:

Это так же просто, как: Запятая может использоваться для разделения команд? Есть ли другие правила?


person James Webster    schedule 19.11.2012    source источник


Ответы (2)


Оператор-запятая – это конструкция языка C.

Из Википедии:

В языках программирования C и C++ оператор запятой (представленный токеном ,) — это бинарный оператор, который оценивает свой первый операнд и отбрасывает результат, а затем вычисляет второй операнд и возвращает это значение (и тип). Оператор запятой имеет самый низкий приоритет среди всех операторов C и действует как точка следования. Использование маркера запятой в качестве оператора отличается от его использования в вызовах и определениях функций, объявлениях переменных, объявлениях перечислений и подобных конструкциях, где он действует как разделитель.

person trojanfoe    schedule 19.11.2012

В вашем коде запятая используется вместо точки с запятой. Не имеет значения, используете ли вы , или ; в своих примерах.

Подробнее см. в этом вопросе: Эффект использования запятой вместо точки с запятой в C и C++

person Felix    schedule 19.11.2012