在几个在线教程中,我注意到哈希或数组的初始化方式有所不同:
my %new_hash_1 = ();
# or
my %new_hash_2;
my @new_array_1 = ();
# or
my @new_array;
通过将元素推送到数组或向哈希值中添加键,值对的基本练习,我初始化变量的方式并不重要。
通过进一步的谷歌搜索,我了解到:
%new_hash_1 = ();
有时用于清空现有的哈希值。
所以我想我的问题是:
非常感谢。
答案 0 :(得分:3)
由于构造哈希和数组的方式,如果在声明它们时为它们分配空列表没有区别。它们仍将包含零元素,您尝试从中读取的任何元素都将是未定义的。
将空列表分配给散列/数组的唯一目的是删除它已有的任何值,并且在初始化时,它们不包含任何值。
重要的是要注意,数组和散列只能包含标量值,只有标量值可以包含数据。
答案 1 :(得分:2)
my %hash
创建一个新的空哈希。
my @array
创建一个新的空数组。
为新创建的散列或数组分配空列表是无用的噪音,因为它们已经是空的。
答案 2 :(得分:-5)
两者都有效,但在维护方面,最好将它们分开,并用括号()和带有花括号{}的哈希初始化列表,到目前为止我的编码约定是: 我的%new_hash_1 = {}; 我的%new_list_1 =();
这样做的好处是可以让以后更新代码的人轻松完成
my %new_hash_1 = { 'a' => 1, 'b' => 2 };
并且有助于use strict;
和use warnings
更好地理解您在使用列表作为哈希时尝试执行的操作。
我还建议您使用PerlCritic http://search.cpan.org/~thaljef/Perl-Critic-1.118/lib/Perl/Critic.pm来获取更多用户友好的消息。
干杯, 的Jere。
ps:在Oreilly Programming Perl(http://docstore.mik.ua/orelly/perl3/prog/ch09_04.htm)
中查看哈希值