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 Less
、Same
或 More
.
之一手动进行元素之间的比较
根据您的示例,我们可以像这样按名字排序:
@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
在适当的地方。
我需要对一组数组进行排序; .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 Less
、Same
或 More
.
根据您的示例,我们可以像这样按名字排序:
@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
在适当的地方。