回答
1
确实被视为布尔值,在这种情况下总是计算为true
。
这基本上是一个if
声明,其中总是通过(首先使它不必要)。
它运行代码块。这相当于:
{
...
}
池上补充:
不,不是这样的。
{ ... }
是一个“裸循环”,一个只执行一次的循环。它受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
但是,它们的相似之处在于它们都创建了一个词法范围。
(在答案中添加注释,以便我可以详细解释这些差异。) – ikegami
在perl
,以下值被认为false
0
Empty String
其他一切被认为true
所以,if (1)
被认为总是true
Perl中还有其他错误值,包括'0.0'和'undef'。 – friedo
if(1)
每次的确返回true,它除了定义范围外什么也不做,类似于代码块
从技术上讲,if (1)
没有什么意思,因为它是一个永远执行的if语句。
if (1)
的一个常见用途是将您希望能够快速禁用的代码封装起来,例如用于调试目的。您可以快速将if (1)
更改为if (0)
以禁用该代码。
貌似1 是被视为一个布尔凭借的事实if
不评估为假真。见How do I use boolean variables in Perl?
有疑问时,可使用Deparse
:
$ perl -MO=Deparse -e'if (1) {}'
do {
()
};
-e syntax OK
在Perl中,布尔语句是假的,如果他们返回0
和值为true,否则。数值返回其值。
在该声明中,用户被强迫if
语句的值是真实的:
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
?然而,这对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;
}
我能想到有人会想这样做的唯一原因是某种调试检查。也就是说,大部分时间的说法是假的,但如果设置为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";
}
或通过调试子程序。
- 1. $ {1}和$ {*}做什么?
- 2. 为什么需要if(0)和if(1)
- 3. JavaScript中做什么(0&1)?
- 4. `sort +0 -1`做什么?
- 5. b!= a&1做什么?
- 6. C++中if(x^1!= 1)和if(int(x^1)!= 1)有什么区别?
- 7. if [[x]!= x]在bash中做什么?
- 8. if后可以做些什么?
- 9. 否则IF +什么都不做c#
- 10. if(xxx || xxx),我做错了什么?
- 11. 这个if语句做了什么?
- 12. if在[-n“$ {TEMP_FILE_LIST}”]中做了什么?
- 13. 这是什么C成语(if(1))?
- 14. 有什么理由使用if(1 ||!Foo())?
- 15. 在这里做什么`end + 1`行?
- 16. 当processHandle = -1时,OpenProcessToken做什么?
- 17. 下面得到(1)函数做什么?
- 18. `strcpy(x + 1,SEQX)`做了什么?
- 19. $ 1在jest config中做了什么?
- 20. c - struct - 额外的“:1”在做什么?
- 21. JQuery单击1什么也不做
- 22. * zoom:1在bootstrap中做了什么?
- 23. sed中的\ 1是做什么的?
- 24. [1]在功能上做了什么?
- 25. Javascript:这个`Array(i + 1)`做什么?
- 26. 是什么,而(1)在Gmail中做
- 27. “$ K2ko {$ D} {$ C} = 1”在perl中做什么?
- 28. 这段代码在做什么? (size_t)-1
- 29. 为什么我不能做std :: map.begin()+ 1?
- 30. if($ a)和if($ a == 1)之间的区别是什么?
尝试将真/假转换为整数。你会看到1是真的,0是假的。 – Jimbo