Ответ 1
Для вас работает следующее:
a = b ? : c;
(Этот синтаксис является расширением GNU для C, поэтому вам, возможно, придется использовать GCC, а не LLVM - http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Conditionals.html#Conditionals).
имеет ли objective-c еще более короткий способ записи этой строки кода?
a = b ? b : c;
Это способ сказать, что a равно b, как долго это не ноль, иначе c. То есть, есть что-то вроде рубинового оператора "|| ="
Для вас работает следующее:
a = b ? : c;
(Этот синтаксис является расширением GNU для C, поэтому вам, возможно, придется использовать GCC, а не LLVM - http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Conditionals.html#Conditionals).
Это так коротко, как вы можете получить его в Objective-C! Это хороший небольшой тест, который у вас есть.
Единственный короткий путь, который я мог бы придумать, заключается в следующем (я бы не рекомендовал его по соображениям удобочитаемости и не так короток, как ваш!):
if (b) a = b; else a = c;