Perl中的布尔值

我们知道,在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字符的字符串.
  • "0\n" - 一个0字符后跟一个换行符组成的字符串.
  • 'true'
  • 'false' - 是的,即使是字符串'false',也是真值.

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

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

转载于:https://my.oschina.net/kiwivip/blog/118462

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值