6

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

4

3 回答 3

2

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

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

例如,如果这是一项任务,那么

a = b ? c : d;

就好像

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

来自规范15.25 Conditional Operator ? :

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

因此,b ? c : d就像一个带有条件的表达式,c如果第一个表达式的求值结果b为真,则表达式的求值结果将是第二个表达式的求值结果,否则它是 thirst 表达式的求值结果d

于 2012-10-10T01:00:26.343 回答
2

如果您在方法结束时返回颜色值,则沿着这些思路:

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

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

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

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

于 2012-10-10T01:01:01.903 回答
1

?三元运算符,它有点类似于 -if语句。基本上,

bool ? a : b

表示“如果bool为真,则使用 value a,否则使用 value 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;
于 2012-10-10T01:12:39.097 回答