“blocks[i][j].isColorBox() ? pieceColor : backgroundColor”的完整版本是什么?该问题涉及IT技术。

6

我读到了这行代码:blocks[i][j].isColorBox() ? pieceColor : backgroundColor,想知道它的 if 语句等价形式是什么,或者它真的是一个 if 语句吗?由于我是编程新手,还在学习语言。谢谢!

3个回答

2

这有点像(取决于您对结果的处理方式)

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 的结果作为整个表达式的结果。


2

如果你在方法的末尾返回颜色值,可以按照以下方式进行:

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

或者如果你将颜色值分配给一个变量:

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

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

1
有趣的是,if/else 作为语句而不是表达式是一种任意的设计选择。例如,Scala 只有 Java 的 ?: 表达式,但它的拼写方式是 if/else :) 也就是说,在 Scala 中,你可以这样说:someVariable = if (blocks[i][j].isColorBox()) pieceColor else backGroundColor - fredoverflow

1

?三元运算符,它有点类似于一个 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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接