gpt4 book ai didi

raku - 如何循环使用 Raku 中散列的排序(使用自定义排序)键?

转载 作者:行者123 更新时间:2023-12-04 04:28:00 24 4
gpt4 key购买 nike

尝试逐步将一些 Perl 脚本转换为 Raku。即使在这里浏览了很多内容并更深入地阅读了 Learning Perl 6,我仍然坚持下面的内容。
我无法取得进展的部分是最后一个循环(转换为 for );获取 key 并按月份名称和日期编号对它们进行排序看起来是不可能的,但我相信这是可行的。
任何有关如何使用“惯用”语法实现这一目标的提示都将非常受欢迎。

#!/usr/bin/perl

use strict;

my %totals;

while (<>) {
if (/redis/ and /Partial/) {
my($f1, $f2) = split(' ');
my $w = $f1 . ' ' . $f2;
$totals{$w}++;
}
}

my %m = ("jan" => 1, "feb" => 2, "mar" => 3, "apr" => 4, "may" => 5, "jun" => 6,
"jul" => 7, "aug" => 8, "sep" => 9, "oct" => 10, "nov" => 11, "dec" => 12);

foreach my $e (sort { my($a1, $a2) = split(' ', $a) ; my($b1, $b2) = split(' ', $b) ;
$m{lc $a1} <=> $m{lc $b1} or $a2 <=> $b2 } keys %totals) {
print "$e", " ", $totals{$e}, "\n";
}

最佳答案

你可以尝试这样的事情:

enum Month (jan => 1, |<feb mar apr may jun jul aug sep oct nov dec>);

lines()
andthen .grep: /redis/&/Partial/
andthen .map: *.words
andthen .map: {Month::{.[0].lc} => .[1].Int}\
#or andthen .map: {Date.new: year => Date.today.year, month => Month::{.[0].lc}, day => .[1], }\
andthen bag $_
andthen .sort
andthen .map: *.put;

关于raku - 如何循环使用 Raku 中散列的排序(使用自定义排序)键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67321509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com