当方法返回 t > 1 作为布尔值时,这意味着啥?
Posted
技术标签:
【中文标题】当方法返回 t > 1 作为布尔值时,这意味着啥?【英文标题】: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>1) return true; else return false;
会更好让你理解吗?
t > 1
计算结果为 bool
。
是的,扬·德沃夏克。更有意义,谢谢!但是我可以用“return true”替换 t>1 吗?因为 t 总是大于 1
@user1924193 如果它返回第一个stone
,它不会大于一个。
谢谢!我现在很清楚了。
【参考方案1】:
return t>1
等于
if (t > 1)
return true;
else
return false;
还有另一个使用return
like;
static string AmIAwesome(bool b)
return b ? "Yes, I'm" : "No, I'm not";
与第一个逻辑相同。
【讨论】:
谢谢大家,我现在明白了。但是我可以用 return true 替换 return t>1 吗? @user1924193 如果你不关心t>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 - 表示它是 true
或 false
- 表示将返回 true
或 false
,具体取决于 t 的值。
完全等价于:
if(t>1)
return true;
else
return false;
【讨论】:
【参考方案5】:如果 t 大于 1,则返回 true,否则返回 false。
【讨论】:
以上是关于当方法返回 t > 1 作为布尔值时,这意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章