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、 exports も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 に答える