曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3587|回复: 0
打印 上一主题 下一主题

undef 值和 defined 函数

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-9-21 09:57:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
变量在没有赋值之前,它就是未定义的,可以说它的初始值就是特殊的 undef ,它表示 “什么都没有” 。对于数字型变量来说,此时该变量会被假设是 0;如果对于字符串变量来说,那么该变量会被假设为空字符串。所以,undef 既不是数字也不是字符串。比如:
[code=perl]
#!/usr/bin/perl
$n = 3;
$sum = $n + 2;
$str .= "add some text";
print "value of sum is $sum. \n";
print "value of str is \"$str\". \n";
[/mw_shl_code]
运行输出:
./defined.pl
value of sum is 5.
value of str is "add some text".
这里,整型变量 $n 被认为是 0。而字符串型变量 $str 则被认为是空字符串,所以在用 '.' 字符连接另外一个字符串时也就相当于给它赋值了该字符串。

许多操作符不合理或参数越界时也会返回 undef 。

defined 函数可以用来判断一个变量是否为 undef 。该函数返回一个布尔值,如果变量为 undef ,则返回假,否则返回真。下面示例说明这种情况:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl
$data = <STDIN>;

if (defined($data)) {
        print "The input was $data \n";
} else {
        print "No input available!\n";
}

上面程序中的 “行输入” 操作符 <STDIN> 一般情况下返回你输入的文字,但如果没有更多的输入时,它就返回 undef 。比如运行上面的程序后,你输入 ctrl + d 表示直接结束输入时,该程序会打印出 "No input available!" 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 12:54 , Processed in 0.078981 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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