1

誰かが次のreturnステートメントの使用/意味を説明できますか:t> 1; (last ifステートメントの最後のメソッドを参照)

コードは「Reversi」と呼ばれるゲームからのものですhttp://en.wikipedia.org/wiki/Reversi

このメソッドは、他のプレイヤーの石を囲んでいるかどうかをチェックします。

public bool allowed(int x, int y, bool player)
    {
        int color;

        if(player == true) // true = player is blue.
            color= 1; 
        else color= -1;

        if(stone[x,y] != 0)
            return false;
        else
        {
         for (int dx = -1; dx <= 1; dx ++)
            {
             for (int dy = -1; dy <= 1; dy ++)
             {
                 if (dx != 0 || dy != 0) // 0, 0 must be skipped, own stone.
                 {
                     if (close(color, x, y, dx, dy))
                         return true;
                 }
             }
            }   
        }
         return false;
         }




public bool close(int color, int x, int y, int dx, int dy)
        {
            int s;
            int testx;
            int testy;
            for(int t=1; t<stone.Length;t++)
            {
                testx = x + t * dx;
                testy = y + t * dy;
                if(testx >= board.Width || testx <= 0 || testy >= board.Heigth|| testy <= 0)
                    return false;
            s = stone[x + t * dx, y + t * dy];
            if (s == 0) return false;
            if (s == color) return t>1;
        }
        return true;
    }
4

5 に答える 5

6

このコード:

return t > 1;

と同等です:

if (t > 1)
{
    return true;
}
else
{
    return false;
}

後者のアプローチを除いて、不必要に冗長であり、残念ながら実際のコードで見るのは非常に一般的です。

于 2012-12-22T22:06:22.923 に答える
2

ステートメントの右側にある式returnが評価され、関数から値が返されます。

この場合、tは、tの値に応じて、1より大きいか、そうでないか(どちらかであることを意味します)またはどちらかtrueであることを意味します。falsetruefalse

これは、次とまったく同じです。

if(t>1)
    return true;
else
    return false;
于 2012-12-22T22:06:10.187 に答える
1

tが1より大きい場合はtrueを返し、そうでない場合はfalseを返します。

于 2012-12-22T22:05:27.977 に答える
1
return t > 1;

と同じです

if (t > 1)
   return true;
else
   return false;

と同じです

bool greaterThanOne;

if (t > 1)
   greaterThanOne = true;
else
   greaterThanOne =false;

return greaterThanOne;
于 2012-12-22T22:06:12.870 に答える
1

return t>1に等しい

    if (t > 1)
   {
       return true;
   }
    else
   {
       return false;
   }

また、returnlikeの別の使用法があります。

static string AmIAwesome(bool b)
        {
            return b ? "Yes, I'm" : "No, I'm not";
        }

これは最初のものと同じロジックです。

于 2012-12-22T22:06:34.923 に答える