【发布时间】:2011-01-15 18:59:01
【问题描述】:
为什么我必须将以下条件表达式的结果分配给变量才能编译?
piece.isWhite() ? whitePieceSquares.add(getSquare(pos)) : blackPieceSquares.add(getSquare(pos));
上面不编译,下面可以:
boolean garbage = piece.isWhite() ? whitePieceSquares.add(getSquare(pos)) : blackPieceSquares.add(getSquare(pos));
List#add() 返回一个布尔值,但我会忽略它。仅仅是条件运算符被设计成需要对函数返回的值进行赋值,并且返回的函数必须具有相同的类型吗?
【问题讨论】:
-
“它不解析”是指“它不编译”吗?还有,
isWhite()的返回类型是什么? -
好的,好的。它无法编译,因为它没有正确解析。我很高兴我们解决了这个问题。这会让任何试图阅读它的人感到困惑。
-
而 isWhite 是一个布尔值(显然是因为它可以编译)。编辑您的评论以假装您在发表有用的评论的方式。
-
"编辑您的评论以假装您在发表有用的评论的方式。" -- 这会激励其他人提供帮助。
-
@schnozzinkobenstein:讽刺会让你一事无成。您向我们寻求帮助。我试图让其他试图帮助你的人更清楚地了解这个问题。此外,如果
isWhite()返回一个整数(1 或 0),则第二个版本将编译。