?: 运算符

 
 
 

使用 ?: 运算符可以在一个语句中编写简写的 if-else 语句。

运算符的格式为:

condition ? exp1 : exp2;

如果条件为真,则运算符返回 exp1 的值。如果条件为假,则运算符将返回 exp2 的值。

// If $y > 20, $x is set to 10,
// otherwise $x is set to the value of $y.
$x = ($y > 20) ? 10 : $y;
// If $x > 10, print "Greater than", otherwise
// print "Less than or equal".
print(($x > 10) ? "Greater than" : "Less than or equal");

可读性

以下语句将 Balloon 的 ScaleY 属性设定为 time 除以 2(如果 time 小于 2),和 time 乘以 2(如果 time 大于等于 2)。(这会使 ScaleY 属性在前两秒的增加速度比两秒之后的速度慢。)

Balloon.scaleY = (time < 2) ? time / 2 : time * 2;

这与以下 if-else 语句相同:

if (time < 2)
	Balloon.scaleY = time / 2;
else 
	Balloon.scaleY = time * 2;

尽管 ?; 运算符可节省空间和减少键入的内容,但 if...else 形式显然更易于阅读。为此,许多编程人员都避免在复杂表达式中使用 ?; 运算符。