lis*_*tor 9 arrays sorting perl6 indices raku
我需要对一组数组进行排序; .sort方法似乎默认工作.但是根据内部数组的不同索引排序的好方法是什么?
要排序的数组是更大的数组:('mmddyy'格式的生日)
my @allRecords = [ [birthday1 firstName1 lastName1 [data1]
[birthday2 firstName2 lastName2 [data2]
...
[birthdayN firstNameN lastNameN [dataN] ];
@allRecords.sort by itself sorts by birthdays.
Run Code Online (Sandbox Code Playgroud)
什么是通过firstName或lastName或内部数组内的数据排序的更好方法?
非常感谢你!
该sort方法将sub作为可选参数.如果其arity为1,则使用返回值作为比较操作数; 如果它的arity是2,你可以手动进行元素之间的比较,但是你认为通过返回其中一个Less,Same或者More.
举个例子,我们可以按照这样的名字排序:
@allRecords.sort(*.[1]);
Run Code Online (Sandbox Code Playgroud)
我们可以按姓氏,然后是名字,然后生日,通过明确地进行单独的比较,如下所示:
@allRecords.sort(-> $a, $b {
$a[2] cmp $b[2] || $a[1] cmp $b[1] || $a[0] cmp $b[0]
});
Run Code Online (Sandbox Code Playgroud)
或者通过转换操作数隐式地再次:
@allRecords.sort(*.[2...0]);
Run Code Online (Sandbox Code Playgroud)
转换生日条目所以我们按年份排序是留给读者的练习,但一种方法是添加像
.comb(2).list.rotate(-1).join
Run Code Online (Sandbox Code Playgroud)
在适当情况下.