在Objective-C中是否有像PHP那样的if-else语句的简短语法:
if($value)
return 1;
else
return 0;
简化版本:
return $value?1:0;
在Objective-C中是否有像PHP那样的if-else语句的简短语法:
if($value)
return 1;
else
return 0;
简化版本:
return $value?1:0;
可以。
有 条件(三元)运算符
。
示例(伪代码):
value = (expression) ? (if true) : (if false);
根据您的示例(有效代码):
int result = value ? 1 : 0;
两种语言完全相同,唯一的区别是通常你在Objective-C变量名中不会发现$
符号。
if(value)
return 1;
else
return 0;
return value?1:0;
你还应该记住条件运算符?:
与其说是if-else语句的简写,不如说是真假表达式的简写。请参阅PHP手册。
int i = j ?: k;
如果 j 是 0,则赋值给 k。 - atomkirk很惊讶没有人提出以下建议:
长版本:
如果(value)
返回1;
否则
返回0;
简短版本:
返回value;
如果value
不是布尔变量,只需要将其转换:return (BOOL)value;
BOOL
是 signed char
上的 typedef
。因此,任何值大于 255 的值,其中较小的字节都是零(例如 256
),将导致结果为 NO
,而不是 YES
,因为将其转换为单字节的 signed char
将剥离高位的非零位。改用 return !!value;
或 return value != NO;
。更多信息:http://nshipster.com/bool/ - Regexident
return value?1:0;
和return !!value;
是相同的。 - Bryan Chen? :
这个东西被称为三元运算符。 - Regexident