gpt4 book ai didi

arrays - 在 Perl 中以编程方式更改排序顺序

转载 作者:行者123 更新时间:2023-12-03 18:25:16 24 4
gpt4 key购买 nike

我想让用户可以更改数据结构中的排序顺序(asc/desc)。据我所知,这是通过更改 $a 的顺序完成的。和 $b在代码中,但我想以编程方式更改它以避免冗余代码。

我做了一个工作示例:

use 5.018;
use warnings;

# Supply any argument to change sorting order
my $sorting_direction = $ARGV[0];

my $data = {
'item1' => {
'min' => 4,
'size' => 825,
'max' => 256,
},
'item2' => {
'min' => 4,
'size' => 130,
'max' => 65,
},
};


if (defined $sorting_direction) {
foreach my $item (sort { $$data{$a}{'size'} <=> $$data{$b}{'size'} } keys %{$data} ) {
say "$item\t", $$data{$item}{'size'};
}
} else {
foreach my $item (sort { $$data{$b}{'size'} <=> $$data{$a}{'size'} } keys %{$data} ) {
say "$item\t", $$data{$item}{'size'};
}
}

给出任何参数都会改变 sorting_direction .我可以在没有 if 条件的情况下做到这一点吗?

最佳答案

由于 <=> 的值为 -1、0 或 1,您可以乘以 -1 以获得相反的排序顺序。

因此,如果您的 $sorting_direction 为 1 或 -1,请使用

$sorting_direction * ( $$data{$a}{'size'} <=> $$data{$b}{'size'} )

关于arrays - 在 Perl 中以编程方式更改排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56391934/

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