我可以在Perl中创建二维数组。 Hash的2d数组有何不同?当我们可以使用数组模拟哈希特征时,为什么哈希是perl中的原始数据结构?
答案 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'
});
如果这不能回答你的问题,我希望我至少提供了一些见解。