6

私はこのコード行を読みました:そして、それに対応するステートメントblocks[i][j].isColorBox() ? pieceColor : backgroundColorは何だろうと思っています。ifまたは、それが本当にif声明である場合。私はプログラミングが初めてで、まだ言語を学んでいます。ありがとうございました!

4

3 に答える 3

2

それは一種のようなものです(結果で何をしているかによって異なります)

if(blocks[i][j].isColorBox()) {
    //... pieceColor
} else {
    //... backgroundColor
}

たとえば、それが割り当ての場合

a = b ? c : d;

のようなものです

if(b) {
   a = c;
} else {
   a = c;
}

仕様から15.25 条件演算子 ? :

条件演算子 ? : 1 つの式のブール値を使用して、他の 2 つの式のどちらを評価するかを決定します。

つまり、最初の式の評価結果が true の場合、式の評価結果b ? c : dが 2 番目の式の評価結果になり、それ以外の場合は 3 番目の式の評価結果になるという条件付きの式のようなものです。cbd

于 2012-10-10T01:00:26.343 に答える
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のないステートメントであるのに対し、後者はそのオペランドの値に評価される式であることに注意してください。

于 2012-10-10T01:01:01.903 に答える
1

?三項演算子であり、ステートメントに多少似ていifます。基本的、

bool ? a : b

boolが true の場合は value を使用しa、それ以外の場合は valueを使用する」ことを意味しますb。あなたの場合:

blocks[i][j].isColorBox() ? pieceColor : backgroundColor

blocks[i][j].isColorBox()「が true の場合は を使用しpieceColor、それ以外の場合は使用する」という意味backgroundColorです。


したがって、以下は一般的に同等です。

n = blocks[i][j].isColorBox() ? pieceColor : backgroundColor

if (blocks[i][j].isColorBox()) 
    n = pieceColor;
else 
    n = backgroundColor;
于 2012-10-10T01:12:39.097 に答える