0

パールでは:

 my %members = ( "fools"      => 6,                      
                 "monsters"    => 2,                      
                 "weirdos"       => 1,                      
                 "coders"    => 1,                                        
                 "betrayers"     => 1,   );     

私が書くとき:

 my @values_members = values %members;

配列内の要素の位置は、6, 2, 1, 1, 1 (コードで「表示される」位置) にはなりません。ランダムまたはランダムに近いものになります。

次のような関数が必要です。

 my values_members = get_values_with_position_as_appears_in_code ( %members );

与える

 ( 6, 2, 1, 1, 1 );

これは可能ですか?

4

1 に答える 1

5

Perl ハッシュは順序付けされていないため、ハッシュから取得する順序について特定の保証はありません。

挿入順序を追跡するハッシュを提供するTie::IxHashを使用できます。

use strict;
use warnings;

use Tie::IxHash;

tie my %members, 'Tie::IxHash', ( "fools"      => 6,                      
                                  "monsters"   => 2,                      
                                  "weirdos"    => 1,                      
                                  "coders"     => 1, 
                                  "betrayers"  => 1,   );

my @values = values %members;

print join "\n" @values;

出力:

6
2
1
1
1
于 2013-08-30T05:21:32.820 に答える