请帮忙看下perl的哈希数组是否需要初始化?

#!/usr/bin/perl-w@clubs=qw/abcdab/;foreach(@clubs){$hash{$_}=$hash{$_}+1;#最一开始不用初始化吗?... #! /usr/bin/perl -w
@clubs=qw/a b c d a b/;

foreach (@clubs){
$hash{$_}=$hash{$_}+1; #最一开始不用初始化吗???
}
foreach (sort keys %hash){
print "$_ had $hash{$_}.\n";
}
==========================
foreach (@clubs)模块里面开始的时候哈希的值为空,这个地方为什么不用初始化为0呢
展开
 我来答
百度网友c9e795dda
2012-10-30 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1137万
展开全部
perl 的 hash 里没有所谓初始化的概念. 也或者说, 当你 "制造" 了一个 key, 其初始值就是 undef.

我们初始化一个值是为了编程时就算忘了赋某个值时, 还有个基本值可供使用.
但 perl 的 hash 里可以装最单纯的 scalar, 也可以是 array, reference, 甚至是 sub.
这跟 java 或很多其他语言不一样, 要事先宣告 data type. 中间任何时候改变都可以.
所以, 也没有初始化的意义了. 初始化并不能给你甚麼特别的保障.

lrepre 说的很对, 如果是 perl 的新手, 最好都用上 -w 和 use strict. 还有日後你需要用到更复杂的 hash 时, 你还会需要用上

no autovivification; # 这个模块是防止你在 if ( ... ) 中意外地制造了个 key 出来
lreper
2012-10-30 · TA获得超过412个赞
知道小有建树答主
回答量:243
采纳率:100%
帮助的人:282万
展开全部
perl 语言是比较随意的,是可以不用初始化使用变量的;
不过你使用了 -w 选项,应该是会报出warning 的;
个人建议,写perl脚本的时候把-w 和use strict 都使用上,便于写出语法严谨的代码来。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shenwei5566
2012-10-30 · TA获得超过610个赞
知道小有建树答主
回答量:575
采纳率:33%
帮助的人:248万
展开全部
不用初始化,所有未定义的变量都是undef, perl的语法比较随意
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式