语法是什么
if (1) {}
办?
我找不到这种语法的文档,1没有被视为布尔值。我对吗?。
答案 0 :(得分:19)
从技术上讲,if (1)
没有任何意义,因为它是一个始终执行的if语句。
if (1)
的一个常见用途是包装您希望能够快速禁用的代码,比如用于调试目的。您可以快速将if (1)
更改为if (0)
以停用代码。
答案 1 :(得分:7)
答案 2 :(得分:4)
1
确实被视为布尔值,它总是计算为true
。
这基本上是if
语句,始终传递(首先使其不必要)。
答案 3 :(得分:2)
如有疑问,请使用Deparse
:
$ perl -MO=Deparse -e'if (1) {}'
do {
()
};
-e syntax OK
答案 4 :(得分:1)
它运行代码块。它相当于:
{
...
}
由ikegami添加:
不,不是。
{ ... }
是一个“裸循环”,一个只执行一次的循环。它受next
,last
和redo
的影响。
if (1) { ... }
不是循环。它不受next
,last
和redo
的影响。
>perl -E"for (1..3) { say $_; if (1) { next; } say $_; }"
1
2
3
>perl -E"for (1..3) { say $_; { next; } say $_; }"
1
1
2
2
3
3
然而,它们的相似之处在于它们都创造了一个词汇范围。
答案 5 :(得分:1)
由于if
未评估为false,因此将1 视为布尔值true。见How do I use boolean variables in Perl?
答案 6 :(得分:1)
在Perl中,如果布尔语句返回值0
,则返回false,否则返回true。数值返回其值。
在该语句中,用户强制if
语句的值为true:
if (1) {
print "This statement is always true\n";
}
当然还有:
if (0) {
print "This statement is false, and you'll never see this printed\n";
}
用户也可以写这样的东西:
if ( 1 == 1 ) {
print "This statement is always true\n"
}
您通常不会在if
声明中看到这一点。如果条件总是如此,为什么还要费心if
?但是,如果您需要无限循环,while
语句很常见:
while (1) {
print "Keep doing this over, and over again\n";
}
通常,有一个逃避条款:
my $count = 0
while (1) {
$count = $count + 1;
print "The Count is now $count\n";
last if $total > 100;
}
我认为有人想要这样做的唯一原因是某种调试检查。也就是说,大多数情况下语句都是false,但如果设置为true,则打印出某种调试语句:
if (0) { #Change from "0" to "1" to debug
print "DEBUG: The value of foo = $foo\n";
}
然而,有更好的方法来处理这样的事情,例如通过常量:
use constant {
DEBUG => 0,
};
if (DEBUG) {
print "DEBUG: The value of foo = $foo\n";
}
或通过调试子程序。
答案 7 :(得分:0)
在perl
中,以下值被视为false
0
Empty String
其他所有内容都被视为true
因此,if (1)
被视为始终为true
答案 8 :(得分:0)
if(1)
确实每次都返回true,除了定义范围之外什么都不做,类似于代码块