加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

为什么!1在Perl中给我什么?

发布时间:2020-12-15 21:12:53 所属栏目:大数据 来源:网络整理
导读:这很奇怪. 下列: $sum = !0;print $sum; 打印出1,你会期望.但是这个 $sum = !1;print $sum; 没打印出来为什么? 解决方法 要小心:你写的是没有做你认为的事情.记住,perl没有真正的布尔数据类型.它有标量,散列,列表和引用.那么它处理真/假值的方式是上下文
这很奇怪.
下列:
$sum = !0;
print $sum;

打印出1,你会期望.但是这个

$sum = !1;
print $sum;

没打印出来为什么?

解决方法

要小心:你写的是没有做你认为的事情.记住,perl没有真正的布尔数据类型.它有标量,散列,列表和引用.那么它处理真/假值的方式是上下文的.除了未定义的变量,空列表,空字符串和数字0之外,所有内容都以perl计算为“true”.

那么你的代码正在做的是将一个值的倒数换成“false”,这可以是上面列出的值.按照惯例,为了简单起见,perl返回1(尽管你不应该依赖它;它可以非常好地返回一个包含一系列随机数的列表,因为它也将评估为“true”).

当您要求评估为“true”的值的倒数时,会发生类似的事情.实际上打印出来的不是“没有”,它是空字符串(”),正如我所提到的,它在布尔表达式中评估为“false”.你可以查看这个:

print "This evaluates to falsen" if( (!1) eq '');

如果您要求为什么perl扔出空字符串而不是其他“false”值之一,那么这可能是因为perl是用来处理字符串的,这是一个完全合理的字符串来回传.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读