Perl的数组有多大不同?

时间:2011-05-14 09:41:07

标签: arrays perl hash

我可以在Perl中创建二维数组。 Hash的2d数组有何不同?当我们可以使用数组模拟哈希特征时,为什么哈希是perl中的原始数据结构?

2 个答案:

答案 0 :(得分:6)

可能你的意思是你可以拥有这样的数据结构:

my $array_hash = [
  [ "key1", "value1" ],
  [ "key2", "value2" ],
];

对于小数据,这很好用,但考虑这样一个数组有大约1000个条目的情况。然后,要通过其键找到特定条目,您必须搜索整个数组,这很慢。

原始哈希类型允许快速查找,这正是它的用途。

在Perl中构建散列表的另一个原因是它们是有用的数据结构,因此不是每个程序员都需要实现自己的数据结构。

答案 1 :(得分:0)

在构造多种类型的对象时,new方法可以传递一个可能显示为哈希的参数列表,但它实际上只是一个数组,其中每个偶数都是一个键,每个奇数是一个值。

my $obj = Some::New::Class->new(
  name => 'Sam',
  age  => 0,
  email => 'sam@localhost'
);

这相当于:

my $obj = Some::New::Class->new(
  'name', 'Sam',
  'age', 0,
  'email', 'sam@localhost'
);

但是,您可以指示new()查找散列,这看起来更像是:

my $obj = Some::New::Class->new({
  name => 'Sam',
  age  => 0,
  email => 'sam@localhost'
});

如果这不能回答你的问题,我希望我至少提供了一些见解。