什么是“blocks [i] [j] .isColorBox()?pieceColor:backgroundColor”的长版本?

时间:2012-10-10 00:58:25

标签: java c++ syntax if-statement

我已经阅读了这行代码:blocks[i][j].isColorBox() ? pieceColor : backgroundColor,我想知道它的if语句是什么。或者,如果它真的是if声明。我是编程新手,我还在学习这门语言。谢谢!

3 个答案:

答案 0 :(得分:2)

有点像(取决于你对结果做了什么)

if(blocks[i][j].isColorBox()) {
    //... pieceColor
} else {
    //... backgroundColor
}

e.g。如果它是一个任务,那么

a = b ? c : d;

就像

if(b) {
   a = c;
} else {
   a = c;
}

来自规范15.25 Conditional Operator ? :

  

条件运算符? :使用一个表达式的布尔值来决定应该评估两个其他表达式中的哪一个。

因此,b ? c : d就像一个条件的表达式,如果对第一个表达式{的评估结果c,则表达式的评估结果将是第二个表达式b的评估结果{ {1}}是正确的,否则它是评价口渴表达式d的结果。

答案 1 :(得分:2)

如果你在方法结束时返回颜色值,那么沿着这些界线:

if (blocks[i][j].isColorBox()) {
    return pieceColor;
} else {
    return backGroundColor;
}

或者,如果您要将颜色值分配给变量:

if (blocks[i][j].isColorBox()) {
    someVariable = pieceColor;
} else {
    someVariable = backGroundColor;
}

无论哪种方式,conditional expression(形式为?:的a.k.a.三元运算符)的“长”版本都将使用if/else并对值执行某些操作。请注意,if/else和条件表达式之间的根本区别在于前者是没有的语句,而后者是一个计算其操作数值的表达式。

答案 2 :(得分:1)

?ternary operator,它有点类似于if - 语句。基本上,

bool ? a : b

表示“如果bool为真,则使用值a,否则使用值b”。在你的情况下:

blocks[i][j].isColorBox() ? pieceColor : backgroundColor

表示“如果blocks[i][j].isColorBox()为真,则使用pieceColor,否则使用backgroundColor”。


因此,以下内容通常是等同的:

n = blocks[i][j].isColorBox() ? pieceColor : backgroundColor

if (blocks[i][j].isColorBox()) 
    n = pieceColor;
else 
    n = backgroundColor;