Raku 中的真值和假值是什么?
What are the truthy and falsy values in Raku?
虽然始终可以使用混合或方法覆盖来修改 Bool 强制转换,默认情况下哪些值被认为是真实的,哪些值被认为是虚假的?
注意:这个问题是 asked previously,但不幸的是它太旧了,它的内容完全过时了,现代 Raku 也没用。
没有真值,因为每种类型都通过在布尔上下文中调用的 .Bool
方法自行决定。对于内置类型,当它们的 .Bool
方法被调用时,下面的 return False
.
0
(x/0
的 Rat
除外,其中 x≠0
)
- 空 list/collection 类型(List、Array、Hash、Map、Set、Bag 等)
- 空字符串
Failure
Promise
在 kept/broken. 之前
StrDistance
before/after 相同
Junction
,如你所愿。
- 键入对象
- 无(技术类型对象)
- 任何未定义的值(技术类型对象)
否则,任何定义的值默认为 returns True
当它的 .Bool
方法被调用时。这包括 Str
'0'
、NaN
和零长度范围 (0^..^0
),在其他语言中可能不真实。
此回答旨在作为快速参考。有关更详细的讨论,请参阅 。
TL;DR 此答案是基于相关文档的详尽摘要。1
基本情况2对于定义的对象(实例)是True
,对于未定义的对象(实例)是False
输入对象)。
在数值上 0
值或 0/0
是 False
。 (但是 Rational
具有非零分子,例如 1/0
是 True
,(0/0).Num
(计算结果为 NaN
)是 True
。)
空集合(List
、Hash
、Set
、Buf
等)是 False
.
一个空字符串(例如文字 ""
)是 False
。 (注意。"0"
、"0.0"
等是True
。)
定义的Failure
是False
。
一个定义的Promise
是False
直到它的状态变成Kept
/Broken
.
定义的 StrDistance
是 False
如果它表示的字符串转换对正在转换的字符串没有影响。
A 定义的 Junction
是 True
或 False
取决于结点的类型和它的 True
/False
值元素.
脚注
1 我写第一个项目符号项目是基于知道它是真实的,因为它是 P6 的基础,并通过检查编译器的代码来确认它。 2 其他要点总结了撰写此 the .Bool
doc page 答案时的内容,其中列出了 20 种类型。如果后一页不完整,则此答案不完整。
2 通过查看 Rakudo 实现代码可以看出基本情况,特别是核心的 Mu.pm6
。相关代码链接见。
虽然始终可以使用混合或方法覆盖来修改 Bool 强制转换,默认情况下哪些值被认为是真实的,哪些值被认为是虚假的?
注意:这个问题是 asked previously,但不幸的是它太旧了,它的内容完全过时了,现代 Raku 也没用。
没有真值,因为每种类型都通过在布尔上下文中调用的 .Bool
方法自行决定。对于内置类型,当它们的 .Bool
方法被调用时,下面的 return False
.
0
(x/0
的Rat
除外,其中x≠0
)- 空 list/collection 类型(List、Array、Hash、Map、Set、Bag 等)
- 空字符串
Failure
Promise
在 kept/broken. 之前
StrDistance
before/after 相同Junction
,如你所愿。- 键入对象
- 无(技术类型对象)
- 任何未定义的值(技术类型对象)
否则,任何定义的值默认为 returns True
当它的 .Bool
方法被调用时。这包括 Str
'0'
、NaN
和零长度范围 (0^..^0
),在其他语言中可能不真实。
此回答旨在作为快速参考。有关更详细的讨论,请参阅
TL;DR 此答案是基于相关文档的详尽摘要。1
基本情况2对于定义的对象(实例)是
True
,对于未定义的对象(实例)是False
输入对象)。在数值上
0
值或0/0
是False
。 (但是Rational
具有非零分子,例如1/0
是True
,(0/0).Num
(计算结果为NaN
)是True
。)空集合(
List
、Hash
、Set
、Buf
等)是False
.一个空字符串(例如文字
""
)是False
。 (注意。"0"
、"0.0"
等是True
。)定义的
Failure
是False
。一个定义的
Promise
是False
直到它的状态变成Kept
/Broken
.定义的
StrDistance
是False
如果它表示的字符串转换对正在转换的字符串没有影响。A 定义的
Junction
是True
或False
取决于结点的类型和它的True
/False
值元素.
脚注
1 我写第一个项目符号项目是基于知道它是真实的,因为它是 P6 的基础,并通过检查编译器的代码来确认它。 2 其他要点总结了撰写此 the .Bool
doc page 答案时的内容,其中列出了 20 种类型。如果后一页不完整,则此答案不完整。
2 通过查看 Rakudo 实现代码可以看出基本情况,特别是核心的 Mu.pm6
。相关代码链接见