【发布时间】:2012-09-30 09:39:59
【问题描述】:
我已经阅读了这行代码:blocks[i][j].isColorBox() ? pieceColor : backgroundColor,我想知道它的 if 语句对应物是什么。或者,如果它真的是 if 声明。我是编程新手,我还在学习这门语言。谢谢!
【问题讨论】:
标签: java c++ syntax if-statement
我已经阅读了这行代码:blocks[i][j].isColorBox() ? pieceColor : backgroundColor,我想知道它的 if 语句对应物是什么。或者,如果它真的是 if 声明。我是编程新手,我还在学习这门语言。谢谢!
【问题讨论】:
标签: java c++ syntax if-statement
有点像(取决于你对结果做了什么)
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 就像一个带有条件的表达式,如果第一个表达式 b 的评估结果为真,则表达式的评估结果将是第二个表达式 c 的评估结果, 否则为 thirst 表达式 d 的求值结果。
【讨论】:
如果您在方法结束时返回颜色值,则类似于以下内容:
if (blocks[i][j].isColorBox()) {
return pieceColor;
} else {
return backGroundColor;
}
或者,如果您将颜色值分配给变量:
if (blocks[i][j].isColorBox()) {
someVariable = pieceColor;
} else {
someVariable = backGroundColor;
}
无论哪种方式,conditional expression(又名?: 形式的三元运算符)的“长”版本将使用if/else 并对值进行处理。请注意,if/else 和条件表达式之间的根本区别在于,前者是一个没有 值 的语句,而后者是一个计算其操作数值的表达式。
【讨论】:
if/else 是语句而不是表达式是任意设计选择。例如,Scala 只有 Java 的 ?: 表达式,但拼写为 if/else :) 也就是说,在 Scala 中你可以说 someVariable = if (blocks[i][j].isColorBox()) pieceColor else backGroundColor。
? 是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;
【讨论】: