![]() |
1
4
对于程序员来说,与其他更详细的语法相比,更详细的语法的好处是:
现在,我只谈论那些不那么冗长的语法在任何方面都不复杂或不聪明的时候,就像人们认识到的那样,只是用更少的字符。 通常情况下,当你看到一种语言中的特定结构时,你希望你使用的语言能够拥有,但以前甚至不一定要实现它。我头脑中的一些例子:
|
![]() |
2
4
用它来迷惑人们! |
![]() |
3
4
我不知道php,在C语言家族中,我从来没有见过在if或while条件之外使用过短路,但是在Perl中,说:
在一个语句中使用它的一个优点是变量声明。否则你必须说:
很难说第二个更干净。在一种没有的语言中,它会更加冗长。
|
![]() |
4
2
我认为你的例子是关于凉爽的因素。没有理由写这样的代码。 编辑:因为惯用的原因,我不介意这样做。如果使用一种语言的每个人都使用短路评估来做出每个人都能理解的类似于语句的实体,那么您也应该这样做。然而,我的经验是,这种类型的代码很少用C族语言编写;正确的形式只是将“if”语句作为普通语句使用,它将条件(可能没有副作用)与条件控件(可能有许多副作用)的函数调用分开。 |
![]() |
5
2
在两种尚未提及的重要情况下,短路操作器是有用的:
案例1
.假设你有一个指针,可能是,也可能不是。
但是,短路运算符允许您更紧凑地编写:
在某种程度上,
案例2 . 如果要将变量设置为从一系列函数之一返回的非假值,只需执行以下操作:
这将设置
还有其他的用途,包括上面提到的那些相当做作的例子。但它们是一个有用的工具,在用不太复杂的语言编程时我忽略了它。 |
![]() |
6
1
与丹所说的有关,我认为这一切都取决于每种编程语言的约定。我看不出有什么不同,所以在每种编程语言中做任何惯用的事情。有一件事会让人想起,如果你必须做一系列的检查,在这种情况下,短路的风格会比替代的如果风格更清楚。 |
![]() |
7
0
如果您有一个昂贵的调用(性能方面的)函数,该函数在右边返回了一个布尔值,而您只希望在另一个条件为真(或假)时调用该布尔值,该怎么办?在这种情况下,短路可以节省许多CPU周期。它确实使代码更简洁,因为嵌套的if语句更少。所以,出于你在问题末尾列出的所有原因。 |
![]() |
8
0
事实上,这就是表演。在编译器中使用短路来消除文件大小和执行速度上的死代码保存。在运行时,如果短路的结果不影响答案,则不会执行逻辑表达式中的剩余子句,从而加快公式的计算速度。我正在努力记住一个例子。例如 A、B、C 这个公式中有两个项是从左到右计算的。 如果a和b的计算结果为false,那么下一个表达式和c可以是false和true,也可以是false和false。无论C的值是多少,两者都会被评估为假。因此,编译器在编译格式中不包含C,因此会使代码短路。 为了回答这个问题,有些特殊情况下编译器无法确定逻辑表达式是否有常量输出,因此不会使代码短路。 |
![]() |
9
0
这样想,如果你有这样的陈述
如果A的返回值为假,那么您可能只想在极少数的特殊情况下评估B。因此,不使用简短的ciruit评估是令人困惑的。 短路评估还可以通过防止另一个加括号的缩进来提高代码的可读性,并且括号有累积的趋势。 |
![]() |
Alex Pander · cleaner代码的嵌套命名空间[已关闭] 6 年前 |
![]() |
Jamil Noyda · 导入模块的最佳方式Python[复制] 6 年前 |
![]() |
Samselvaprabu · 我们是否需要不惜任何代价避免重复? 6 年前 |
![]() |
user9549524 · 基于一列的值从二维矩阵中提取值 6 年前 |
![]() |
MedAl · 不使用try/catch处理异常 6 年前 |
![]() |
Declan McKenna · 特殊情况模式在Swift中是否多余? 6 年前 |