请帮忙看下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呢 展开
@clubs=qw/a b c d a b/;
foreach (@clubs){
$hash{$_}=$hash{$_}+1; #最一开始不用初始化吗???
}
foreach (sort keys %hash){
print "$_ had $hash{$_}.\n";
}
==========================
foreach (@clubs)模块里面开始的时候哈希的值为空,这个地方为什么不用初始化为0呢 展开
展开全部
perl 的 hash 里没有所谓初始化的概念. 也或者说, 当你 "制造" 了一个 key, 其初始值就是 undef.
我们初始化一个值是为了编程时就算忘了赋某个值时, 还有个基本值可供使用.
但 perl 的 hash 里可以装最单纯的 scalar, 也可以是 array, reference, 甚至是 sub.
这跟 java 或很多其他语言不一样, 要事先宣告 data type. 中间任何时候改变都可以.
所以, 也没有初始化的意义了. 初始化并不能给你甚麼特别的保障.
lrepre 说的很对, 如果是 perl 的新手, 最好都用上 -w 和 use strict. 还有日後你需要用到更复杂的 hash 时, 你还会需要用上
no autovivification; # 这个模块是防止你在 if ( ... ) 中意外地制造了个 key 出来
我们初始化一个值是为了编程时就算忘了赋某个值时, 还有个基本值可供使用.
但 perl 的 hash 里可以装最单纯的 scalar, 也可以是 array, reference, 甚至是 sub.
这跟 java 或很多其他语言不一样, 要事先宣告 data type. 中间任何时候改变都可以.
所以, 也没有初始化的意义了. 初始化并不能给你甚麼特别的保障.
lrepre 说的很对, 如果是 perl 的新手, 最好都用上 -w 和 use strict. 还有日後你需要用到更复杂的 hash 时, 你还会需要用上
no autovivification; # 这个模块是防止你在 if ( ... ) 中意外地制造了个 key 出来
展开全部
perl 语言是比较随意的,是可以不用初始化使用变量的;
不过你使用了 -w 选项,应该是会报出warning 的;
个人建议,写perl脚本的时候把-w 和use strict 都使用上,便于写出语法严谨的代码来。
不过你使用了 -w 选项,应该是会报出warning 的;
个人建议,写perl脚本的时候把-w 和use strict 都使用上,便于写出语法严谨的代码来。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用初始化,所有未定义的变量都是undef, perl的语法比较随意
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询