虽然总是可以使用mixin或方法重写来修改Bool强制,但默认情况下,哪些值被认为是truthy,哪些值被认为是falsy?
注意:这个问题以前问过,但不幸的是它太老了,它的内容完全过时了,没有用的是现代的拉库。
TL;DR此答案是基于相关文件的详尽摘要。1
>
基本大小写2是True
为一个定义的对象(一个实例)和False
为一个未定义的对象(一个类型对象)。
数值0
值或0/0
为False
。(但是带有非零分子的Rational
,例如1/0
是True
,而(0/0)。Num
(计算结果为NaN
)是True
)
空集合(List
,Hash
,Set
,Buf
等)是False
。
空字符串(如literal“
)为False
。(注意,“0”
,“0.0”
等都是正确的
)
定义的Failure
是False
。
定义的Promise
是False
,直到其状态变为保持
/Broken
。
如果定义的标准状态
所表示的字符串转换对正在转换的字符串没有影响,则定义的标准状态
为False
。
定义的连接
是真
还是假
,取决于连接的类型及其元素的真
/假
值。
1我写第一个项目符号是基于知道它是真的,因为它是P6的基础,并且通过检查编译器的代码来确认它。2其他要点总结了写这篇文章时的内容的答案。bool
doc页面在这一点上列出了20种类型。如果后一页不完整,那么这个答案是不完整的。
2通过查看Rakudo实现代码,尤其是core的Mu.pm6
可以看到基本情况。有关相关代码链接,请参见我对类似SO的回答。
没有真实值,因为每个类型都通过在布尔上下文中调用的.Bool
方法自行决定。对于内置类型,当调用它们的.Bool
方法时,以下返回False
。
0
(x/0
的Rat
除外其中x ICC 0
)失败
promise
之前被保持/打破。其前/后相同的Str距离
。Junction
,当你期望的时候。否则,在调用其.Bool
方法时,默认情况下任何定义的值都会返回True
。这包括在其他语言中可能不真实的Str
'0'
,NaN
,以及零长度范围(0^..^0
)。
此答案旨在作为快速参考。有关更详细的讨论,请参见此答案。
问题内容: 我刚刚才知道有和值在这是从正常的不同和? 有人可以深入解释什么是真实和虚假的价值观吗? 我应该在哪里使用它们? 是什么区别和值和和价值观? 问题答案: 如评论所述,它仅指评估为True或False的值。 例如,查看列表是否不为空,而不是像这样检查: 您可以简单地做到这一点: 这是因为在评估布尔值时,某些值(例如空列表)被视为False。非空列表为True。 类似地,对于整数,对于,空字
我刚刚了解到python中有truthy和falsy值,它们不同于正常的和。 有人能深入解释什么是真实和虚假的价值观吗?我应该在哪里使用它们?truthy和值与falsy和值之间有什么区别?
<代码>文档。all是DOM中的一个非原始对象,它是falsy。 例如,此代码不做任何事情: 有人能解释一下这是为什么吗?
我现在有这个可以用的 我想添加一个条件,在这里我只会出售时,购买是虚假的如下,但它没有工作 为什么它不工作? 有什么建议吗?非常感谢。
我对浮点数有一个基本的了解,并且正在阅读这篇文章,其中说: 0.1 0.2:这等于0.3,但在浮点数中:为false。这是因为0.1、0.2和0.3不能精确地表示在基2浮点数中。 根据浮点数的性质,这是正确的,但我编写了一个简单的程序来测试: 但是输出实际上是。以下是我的两个问题: > 我想发生的是,因为C使用了从四舍五入到五舍五入的模式,所以在四舍五入之后,它恰好是真的,我的理解正确吗? 如果我
原始关闭原因未解决 我见过以下案例: 为什么会出现这种差异?