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

Perl中的布尔值

发布时间:2020-12-16 00:15:40 所属栏目:大数据 来源:网络整理
导读:我们知道,在Perl中,并没有专门的布尔值类型,但是在一些Perl文档中,你经常会看到诸如"某个函数返回了一个布尔值"或者"某个函数返回了true(或false)"等等这样的言论.那么,究竟哪种说法是对的呢? Perl的确没有专门的布尔值类型,但是当任何一个标量放在 if 条件

我们知道,在Perl中,并没有专门的布尔值类型,但是在一些Perl文档中,你经常会看到诸如"某个函数返回了一个布尔值"或者"某个函数返回了true(或false)"等等这样的言论.那么,究竟哪种说法是对的呢?

Perl的确没有专门的布尔值类型,但是当任何一个标量放在if条件中时,它的值不是被当成真,就会被当成假.所以你的条件判断不仅可以这么写:

if($x eq "foo"){ }

同时还可以这么写:

if($x){ }

前一段代码是检查了变量$x的值是否等于字符串"foo",而后一段代码是用来检查$x变量是个真值还是个假值.

在Perl中,什么样的值是真值,什么样的值是假值?

答案很简单,我这里先直接引用一下perlsyn文档中"Truth and Falsehood"一小节中所讲的一段:

数字0,字符串'0'和空字符串"",空列表(),以及undef在布尔上下文中都是假值,除此之外,其他所有的值都是真值.如果使用!或者not运算符对这些真值取反,则会返回一个特殊的假值.如果这个假值被按照字符串解析,那么它会被当成一个空字符串""来对待,如果被按照数字解析,则它会被当成数字0来对待.

总结一下就是:在标量范围内,只有下面的这4个标量会被当成假值:

  • undef - 表示未定义的值.
  • 0 - 数字0,即使你写成000或者0.0也同样.
  • '' - 空字符串.
  • '0' - 只包含一个0字符的字符串.

所有其他的标量都是真值,包括下面举的这些例子:

  • 1 - 任意的非零值.
  • ' ' - 一个只包含了单个空格符的字符串.
  • '00' - 一个只包含了两个或者更多0字符的字符串.
  • "0n" - 一个0字符后跟一个换行符组成的字符串.
  • 'true'
  • 'false' - 是的,即使是字符串'false',也是真值.

之所以这么设计,也许是因为Perl的创始人 ——?Larry Wall,有着非常积极的世界观.他也许认为,这个世界上只有极少数事物是坏的或者假的,大部分事物都是真的.

原文:http://perl5maven.com/boolean-values-in-perl

(编辑:李大同)

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

    推荐文章
      热点阅读