Почему я должен присвоить результат следующего условного выражения переменной, чтобы заставить его компилироваться?
piece.isWhite() ? whitePieceSquares.add(getSquare(pos)) : blackPieceSquares.add(getSquare(pos));
Выше не компилируется, ниже:
boolean garbage = piece.isWhite() ? whitePieceSquares.add(getSquare(pos)) : blackPieceSquares.add(getSquare(pos));
List#add()
возвращает логическое значение, но я бы просто проигнорировал это. Просто условный оператор разработан таким образом, что необходимо присваивать значения, возвращаемые функциями, и эти возвращаемые функции должны иметь одинаковый тип?