Perl6 的無窮陣列和深層比對

Home » Perl6 » Perl6入門 » Perl6 的無窮陣列和深層比對
2015-07-26 Perl6入門 尚無留言

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
.......

LEAVE A COMMENT

  +  twelve  =  fifteen

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料