我想在Perl中代表一个集合.我通常做的是使用带有一些虚拟值的哈希,例如:
my %hash=();
$hash{"element1"}=1;
$hash{"element5"}=1;
Run Code Online (Sandbox Code Playgroud)
然后使用if (defined $hash{$element_name})
来确定元素是否在集合中.
这是一种常见做法吗?有关改进的建议吗?
另外,我应该使用defined
或exists
?
谢谢
Cha*_*ens 48
是的,以这种方式构建哈希集是一种常见的习惯用法.注意:
my @keys = qw/a b c d/;
my %hash;
@hash{@keys} = ();
Run Code Online (Sandbox Code Playgroud)
1
因为undef
占用的空间显着减少,所以优选使用该值.这也迫使你使用exists
(无论如何这是正确的选择).
dax*_*xim 14
使用CPAN上的众多Set模块之一.从你的例子来看,Set::Light
或者Set::Scalar
看起来合适.
我可以用CPAN的常规论据来辩护这个建议(无视可能的协同效应).
很少有人认为在开始时选择一个模块是错误的选择.
归档时间: |
|
查看次数: |
26004 次 |
最近记录: |