Perl6 多了一個有趣的陣列宣告法,叫「無窮陣列」,用法如下:
my @arry = 1..*; # 1,2,3,4,5.... 自然數
怎麼知道它真的是無窮呢?在回答這個問題之前,要先提一下「深層比對」(deep equality),看以下用法:
my @arry = 1..100; # 陣列 arry 為 1 到 100 my @brry = @arry[^10]; # 列列 brry 取 arry 前 10 個元素 say @arry eqv @brry; # 深層比對這兩個陣列,結果不相等,出現: False
好啦,現在把 @arry 改成無窮陣列:
my @arry = 1..*; my @brry = @arry[^10]; say @arry eqv @brry;
此時,由於有限陣列和無窮陣列的比對操作,會讓這支程式進入無窮無盡的比對之中,永遠無法停止。 😉
當然,直接用 for 來驗證也是可以的啦:
my @arry = 1..*; for @arry { .say; } # => 結果: 1 2 3 4 5 .......