объявление блока с авто

Могу ли я объявить блок ObjC с помощью auto?

auto fun = ^(int x) { NSLog(@"%d", x); }
fun(5);

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

2

Решение

Вам не хватает ; после объявления fun, В противном случае вы получите правильный синтаксис, и Clang примет это в -std=c++11 -fblocks режим для ввода C ++ или Objective-C ++. (Обратите внимание, что блоки на самом деле являются ортогональным расширением, которое не является частью Objective-C.)

4

Другие решения

Я не думаю, что ключевое слово auto из C ++ / Objective-C ++ используется в Objective-C.

Что касается объявления блочной переменной для вашего примера, то в target-C будет работать следующее

void(^fun)(int x) = ^(int x) {
NSLog(@"%d",x);
};

fun(5);

Для большего количества опций объявления в блоке есть очень хороший ответ Вот

0

Ключевое слово auto — это ключевое слово c ++ 11. Objective-c является надмножеством c не c ++ и поэтому не содержит свойств c ++, а скорее c. Что касается Objective-C ++, я не верю, что Clang обновлен на все новые функции C ++ 11, особенно в компиляторе, который строит Objective-C ++. Надеюсь это поможет!

0
По вопросам рекламы [email protected]