【问题标题】:Perl: make values %hash remember the position in the code where the value wasPerl:使值 %hash 记住值在代码中的位置
【发布时间】:2013-09-02 17:34:04
【问题描述】:

在 Perl 中:

 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 );

这可能吗?

【问题讨论】:

标签: perl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多