我读到了这行代码:blocks[i][j].isColorBox() ? pieceColor : backgroundColor
,想知道它的 if
语句等价形式是什么,或者它真的是一个 if
语句吗?由于我是编程新手,还在学习语言。谢谢!
我读到了这行代码:blocks[i][j].isColorBox() ? pieceColor : backgroundColor
,想知道它的 if
语句等价形式是什么,或者它真的是一个 if
语句吗?由于我是编程新手,还在学习语言。谢谢!
这有点像(取决于您对结果的处理方式)
if(blocks[i][j].isColorBox()) {
//... pieceColor
} else {
//... backgroundColor
}
a = b ? c : d;
就像
if(b) {
a = c;
} else {
a = c;
}
根据15.25 条件运算符 ? :的规范:
条件运算符 ? : 使用一个表达式的布尔值来决定应该计算哪两个其他表达式之一。
因此,b ? c : d
就像一个条件表达式,如果第一个表达式 b
的结果为true,则计算第二个表达式 c
的结果作为整个表达式的结果;否则计算第三个表达式 d
的结果作为整个表达式的结果。
如果你在方法的末尾返回颜色值,可以按照以下方式进行:
if (blocks[i][j].isColorBox()) {
return pieceColor;
} else {
return backGroundColor;
}
或者如果你将颜色值分配给一个变量:
if (blocks[i][j].isColorBox()) {
someVariable = pieceColor;
} else {
someVariable = backGroundColor;
}
?:
的三元运算符)是使用一个if/else
并对值进行操作。请注意,if/else
和条件表达式之间的根本区别在于前者是没有值的语句,而后者是一个表达式,其计算结果是其操作数的值。?
是三元运算符,它有点类似于一个 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;
if/else
作为语句而不是表达式是一种任意的设计选择。例如,Scala 只有 Java 的?:
表达式,但它的拼写方式是if/else
:) 也就是说,在 Scala 中,你可以这样说:someVariable = if (blocks[i][j].isColorBox()) pieceColor else backGroundColor
。 - fredoverflow