![]() |
1
59
这是语言的正常行为。引用
正因为如此,我们需要有一种回归的方式
|
![]() |
2
52
因为它是在Perl内核中硬编码的,以将其视为一个数字。这是一个使Perl的约定和
|
![]() |
3
45
除了别人说的以外,,
|
![]() |
4
32
价值
假设我有一个子程序,返回两个数字的和:
第一条语句不会消亡,因为子例程将返回
嗯,我可以补充一下
为了解决这个问题,Perl考虑
但是 0但正确
是的,是零! 这个 index 子例程是Perl中非常古老的一部分,早在 0但正确 他在附近。假设返回位于字符串中的子字符串的位置:
最后一个statment返回一个
正如我通常对标准函数所做的那样,它不会工作。如果我像在第二个语句中那样使用“barfoo”和“bar”,那么
|
![]() |
5
25
您还可以看到字符串 "0E0" used in Perl code ,它的意思是一样的,其中0E0表示以指数表示的0。但是,由于Perl只将“0”、“0”或undef视为false,因此它在布尔上下文中的计算结果为true。 |
![]() |
6
13
Perl_grok_number_flags in numeric.c . 阅读该代码时,我发现字符串“infinity”(不区分大小写)也通过了looks_like_number测试。我不知道。 |
![]() |
7
10
|
![]() |
8
9
0 在Perl(以及其他与C相关的语言)中表示false。在大多数情况下,这是一种合理的行为。其他语言(例如Lua)处理 0 为true,并提供另一个标记(通常 或 错误的 )表示非真值。 Perl方法不能很好地工作的一种情况是,您希望返回一个数字,或者如果函数由于某种原因失败,则返回一个假值。例如,如果您编写一个函数,从文件中读取一行并返回该行的字符数。该函数的常见用法可能是:
请注意,如果特定行上的字符数为0,则 虽然 循环将在文件结束之前结束。所以 行中的字符 函数应为特殊情况0个字符并返回 “0但为真” 相反这样,该功能将按照 虽然 请注意,这不是语言的内置部分。相反,它利用了Perl将字符串解释为数字的能力。因此,有时会使用其他螫针来代替。 DBI 使用 “0E0” 0 错误的 . |
![]() |
9
6
此外,Perl返回
|
![]() |
10
4
“0但为真”的另一个示例: DBI模块使用“0E0”作为不影响任何记录的更新或删除查询的返回值。它在布尔上下文中的计算结果为true(表示查询已正确执行),在数字上下文中的计算结果为0,表示查询未更改任何记录。 |
![]() |
11
4
我刚刚找到证据,证明字符串“0但为true”实际内置在解释器中,就像这里的一些人已经回答的那样:
|
![]() |
12
3
未定义 (即,对于错误情况),则必须注意值0。返回值为false,不应指示错误情况,因此返回“0但为true”将使函数返回值为true,同时在对其进行数学运算时仍返回值0。 |
![]() |
13
3
“0 but true”是一个字符串,与其他任何字符串一样,但由于perl的语法,它可以起到有用的作用,即从函数返回整数零,而结果不会是“false”(在perl看来)。
考虑:
所有这些的结果是,您可以:
|
![]() |
14
2
字符串“`0 but true”仍然是一个特例:
... 别忘了RTFM!
|
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
BioRod · 我不能用Perl打印键和值 2 年前 |
![]() |
user17227456 · Perl CLI代码无法追加字符串行 2 年前 |
![]() |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 2 年前 |
![]() |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 2 年前 |
![]() |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 2 年前 |
![]() |
Pranay Nanda · 使用regex解析许可证文件 6 年前 |