有没有办法用自定义比较函数在数组中找到最小值,除了排序并取第一项?
问问题
928 次
2 回答
6
您可以使用reduce
from创建一个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 回答