我有一个程序,我试图理解,但有一个我不明白的缩写代码或代码.代码是
double xDistance = x1 - x2 >= 0 ? x1 - x2 : x2 - x1;
double yDistance = y1 - y2 >= 0 ? y1 - y2 : y2 - y1;
Run Code Online (Sandbox Code Playgroud)
我在编程书籍中读到了?:是if ... then的缩写形式但是我把这些单词放在哪里,因为每次我插入或替换一些代码我都会遇到语法错误.
还有不止一种方法来编写以下代码行
(xDistance <= (w1 + w2) / 2 && yDistance <= (h1 + h2) / 2)
Run Code Online (Sandbox Code Playgroud)
最好替换&&运算符
提前感谢您提供的任何帮助.
该条件运算符 ? :是速记if-else和作品像这样:
(condition) ? (return this if condition true) : (return this if condition false)
Run Code Online (Sandbox Code Playgroud)
因此
double xDistance = x1 - x2 >= 0 ? x1 - x2 : x2 - x1;
Run Code Online (Sandbox Code Playgroud)
相当于:
if (x1 - x2 >= 0)
xDistance = x1 - x2;
else
xDistance = x2 - x1;
Run Code Online (Sandbox Code Playgroud)
第二行:
double yDistance = y1 - y2 >= 0 ? y1 - y2 : y2 - y1;
Run Code Online (Sandbox Code Playgroud)
是一回事,等同于:
if (y1 - y2 >= 0)
yDistance = y1 - y2;
else
yDistance = y2 - y1;
Run Code Online (Sandbox Code Playgroud)
这是在和中存储绝对值(即距离而不是位移).也可以替换等xDistanceyDistanceMath.abs(x1 - x2)
为什么要&&在下面更换操作员?
(xDistance <= (w1 + w2) / 2 && yDistance <= (h1 + h2) / 2)
Run Code Online (Sandbox Code Playgroud)
如果你真的不得不这样做(假设这个陈述属于一个 if 陈述):
if (xDistance <= (w1 + w2) / 2)
if (yDistance <= (h1 + h2) / 2)
// do something
Run Code Online (Sandbox Code Playgroud)
编辑:正如大卫在评论中提到的,&&只是一个逻辑 AND.即.for X && Y表达式为TRUE,如果两者都X为TRUE且Y为TRUE.
因此,您可以利用短路,如果第一个条件(X)为FALSE,则程序中没有任何一点评估第二个(Y),因为表达式永远不会为TRUE.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |