Chinaunix
标题:
关于Perl的hash的exists函数的用途
[打印本页]
作者:
no47wk
时间:
2013-10-04 21:13
标题:
关于Perl的hash的exists函数的用途
本帖最后由 no47wk 于 2013-10-04 21:13 编辑
要判断一个元素是否存在,我可以直接用if($hash{some}),为什么还要多加一个exists函数呢?
#!/usr/bin/perl
use strict;
use utf8;
use autodie;
use warnings;
use 5.010;
my %a = (a => 1);
if($a{b}){
say 'yes';
}
if(exists $a{b}){
say 'yes';
}
复制代码
这两个判断的输出没有任何不同,很费解为何要有一个exists函数
作者:
iamlimeng
时间:
2013-10-04 21:55
本帖最后由 iamlimeng 于 2013-10-04 21:57 编辑
$hash{some} = '';
你再试试!
作者:
no47wk
时间:
2013-10-04 22:06
回复
2#
iamlimeng
thx
exists主要存在的目的就是万一有某个key对应的value是undef
作者:
104359176
时间:
2013-10-05 18:45
回复
3#
no47wk
你再试试 $hash->{$key} = undef;
作者:
104359176
时间:
2013-10-05 18:50
回复
4#
104359176
还是别折腾你了。
一个不存在的键值和一个存在的键值的判断,要用 exists
通过值判断真假,不能判断是否存在。因为在 Perl 中,假的定义包括:
0 空字符串
而一个不存在的东西,叫 undef。 如果进行布尔逻辑判断,是要报错的。
所以,对一个哈希键值的判断,稳健的方式是先进性存在性判断,然后进行值的比较。
作者:
no47wk
时间:
2013-10-06 11:04
回复
5#
104359176
多谢您的回复,我理解了exists函数存在的意义了
作者:
pitonas
时间:
2013-10-08 13:24
5楼!强!
好多用法见都没见过
作者:
zyx6a
时间:
2013-10-08 15:39
菜鸟学习了。。
作者:
Okelani
时间:
2013-10-08 22:11
菜鸟学习了。理解了。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2