【问题标题】:What does it mean when a method returns t > 1 as a boolean?当方法返回 t > 1 作为布尔值时,这意味着什么?
【发布时间】:2012-12-10 00:36:42
【问题描述】:

有人可以解释以下返回语句的用途/含义:t > 1;(参见最后一个 if 语句最后一个方法)

代码来自一个名为“黑白棋”的游戏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;
    }

【问题讨论】:

  • if(t&gt;1) return true; else return false; 会更好让你理解吗?
  • t &gt; 1 计算结果为 bool
  • 是的,扬·德沃夏克。更有意义,谢谢!但是我可以用“return true”替换 t>1 吗?因为 t 总是大于 1
  • @user1924193 如果它返回第一个stone,它不会大于一个。
  • 谢谢!我现在很清楚了。

标签: c# .net boolean return reversi


【解决方案1】:

return t&gt;1 等于

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

还有另一个使用returnlike;

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

与第一个逻辑相同。

【讨论】:

  • 谢谢大家,我现在明白了。但是我可以用 return true 替换 return t>1 吗?
  • @user1924193 如果你不关心t&gt;1 表达式,你可以替换它。完全取决于你。
【解决方案2】:

这段代码:

return t > 1;

相当于:

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

除了后一种方法不必要地冗长,不幸的是在实际代码中很常见。

【讨论】:

  • +1 表示“不幸的是,在实际代码中很常见” 每次都让我的眼睛流血。几乎和if (foo == true)一样糟糕
【解决方案3】:
return t > 1;

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

一样
bool greaterThanOne;

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

return greaterThanOne;

【讨论】:

    【解决方案4】:

    return 语句右侧的任何表达式求值,然后从函数返回值。

    在这种情况下,t 可以大于 1,也可以不大于 1 - 表示它是 truefalse - 表示将返回 truefalse,具体取决于 t 的值。

    完全等价于:

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

    【讨论】:

      【解决方案5】:

      如果 t 大于 1,则返回 true,否则返回 false。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-03
        • 2013-07-03
        • 1970-01-01
        • 2013-11-28
        • 1970-01-01
        • 2021-11-30
        • 1970-01-01
        • 2021-04-30
        相关资源
        最近更新 更多