perl6 对数组数组进行排序的最佳方法?

perl6 Best ways to sort array of arrays?

我需要对一组数组进行排序; .sort 方法似乎可以通过 默认。但是按不同索引排序的好方法是什么? 内部数组?

要排序的数组是更大的数组:('mmddyy' 格式的生日)

my @allRecords = [ [birthday1 firstName1 lastName1 [data1]
                   [birthday2 firstName2 lastName2 [data2] 
                   ...
                   [birthdayN firstNameN lastNameN [dataN] ];

@allRecords.sort by itself sorts by birthdays. 

按名字或姓氏或内部数组中的数据排序的更好方法是什么?

非常感谢!

sort 方法takes a sub as optional argument。如果其元数为 1,则使用 return 值作为比较操作数;如果它的 arity 是 2,你可以通过 returning LessSameMore.

之一手动进行元素之间的比较

根据您的示例,我们可以像这样按名字排序:

@allRecords.sort(*.[1]);

我们可以通过像这样明确地进行单独比较来按姓氏,然后是名字,然后是生日排序:

@allRecords.sort(-> $a, $b {
    $a[2] cmp $b[2] || $a[1] cmp $b[1] || $a[0] cmp $b[0]
});

或者通过转换操作数再次隐含地:

@allRecords.sort(*.[2...0]);

转换生日条目以便我们首先按年份排序留作 reader 的练习,但一种方法是添加类似

的内容
.comb(2).list.rotate(-1).join

在适当的地方。