当前位置: 首页 > 知识库问答 >
问题:

拉库的真实和虚假价值观是什么?

周超英
2023-03-14

虽然总是可以使用mixin或方法重写来修改Bool强制,但默认情况下,哪些值被认为是truthy,哪些值被认为是falsy?

注意:这个问题以前问过,但不幸的是它太老了,它的内容完全过时了,没有用的是现代的拉库。

共有2个答案

程智明
2023-03-14

TL;DR此答案是基于相关文件的详尽摘要。1

>

  • 基本大小写2True为一个定义的对象(一个实例)和False为一个未定义的对象(一个类型对象)。

    数值0值或0/0False。(但是带有非零分子的Rational,例如1/0True,而(0/0)。Num(计算结果为NaN)是True

    空集合(ListHashSetBuf等)是False

    空字符串(如literal)为False。(注意,“0”“0.0”等都是正确的

    定义的FailureFalse

    定义的PromiseFalse,直到其状态变为保持/Broken

    如果定义的标准状态所表示的字符串转换对正在转换的字符串没有影响,则定义的标准状态False

    定义的连接还是,取决于连接的类型及其元素的/值。

    1我写第一个项目符号是基于知道它是真的,因为它是P6的基础,并且通过检查编译器的代码来确认它。2其他要点总结了写这篇文章时的内容的答案。booldoc页面在这一点上列出了20种类型。如果后一页不完整,那么这个答案是不完整的。

    2通过查看Rakudo实现代码,尤其是core的Mu.pm6可以看到基本情况。有关相关代码链接,请参见我对类似SO的回答。

  • 邹宣
    2023-03-14

    没有真实值,因为每个类型都通过在布尔上下文中调用的.Bool方法自行决定。对于内置类型,当调用它们的.Bool方法时,以下返回False

    • 0x/0Rat除外其中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使用了从四舍五入到五舍五入的模式,所以在四舍五入之后,它恰好是真的,我的理解正确吗? 如果我

    • 原始关闭原因未解决 我见过以下案例: 为什么会出现这种差异?