2

有没有办法用自定义比较函数在数组中找到最小值,除了排序并取第一项?

4

2 回答 2

6

您可以使用reducefrom创建一个List::Util

use List::Util qw/reduce/;
$min = reduce { $a < $b ? $a : $b } 1..10 # regular minimum

例如,如果要比较字符串,请替换<le(尽管List::Util也可以导出minstr)。

于 2011-04-09T08:47:13.703 回答
1

看起来你想要更高阶的函数,也许,切换到函数式语言?

但不要害怕,你可以在 perl 中模拟它,或者选择简单的解决方案:

 my $min = shift @yourlist; # or $yourlist[0] if the list must remain intact      
 # assuming that your compare function is named "lower"
 map { $min = $_ if lower($_, min) } @yourlist;
于 2011-04-09T08:48:31.213 回答