私はこのコード行を読みました:そして、それに対応するステートメントblocks[i][j].isColorBox() ? pieceColor : backgroundColor
は何だろうと思っています。if
または、それが本当にif
声明である場合。私はプログラミングが初めてで、まだ言語を学んでいます。ありがとうございました!
3 に答える
それは一種のようなものです(結果で何をしているかによって異なります)
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 番目の式の評価結果になるという条件付きの式のようなものです。c
b
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
が 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;