找回密码
 注册
查看: 2070|回复: 0

perl语言中的undef 值

[复制链接]
发表于 2011-11-13 09:59:51 | 显示全部楼层 |阅读模式
在变量被赋值之前使用它会有什么情况发生呢?通常不会有什么严重的后果。变量在第一次赋值前有一个特殊值undef,按
照Perl 来说就是:“这里什么也没有,请继续”。如果这里的“什么也没有”是一些“数字”,则表现为0。如果是“字符串”,
则表现为空串。但undef 既非数字也非字符串,它是另一种标量类型。
由于undef 在需要数字的地方可以自动转化为0,因此可以如下的写代码:
#将一些基数相加
#n = 1;
while($n < 10){
$sum += $n;
$n +=2;#下一个奇数
}
print “The total was $sum.\n”;
上述代码在$sum 未初始化(undef)时也能正确执行。第一次执行时,循环体中第一行$n 值为1,因此将1 加给$sum。而$sum
就像已经有值0,因为$sum 值为undef。现在其值1。之后,由于其已被初始化,其过程同普通的类似。
同样的,针对字符串的情形:
$string .= “more text\n”;
如果$string 为undef;则是空串后接“more text\n”。反之,则是其值后接“more text\n”。
Perl 程序员在使用新变量时,经常不初始化,从而将变量作为0 或者空串使用。
许多操作当参数不恰当时返回undef。如果没做特殊处理,通常会得到0 或者空串。实践中,这几乎不会有什么问题。实际
上,许多程序员利用这种性质。但应当知道如果警告是打开的,那Perl 在你不恰当的使用未定义值时会提醒你。例如,将
一个undef 的变量赋给另一个变量不会有什么问题,但如果print 某个未定义的值则将引起警告。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-27 12:01 , Processed in 0.028846 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表