回答
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