gpt4 book ai didi

perl - 添加到无如何工作?

转载 作者:行者123 更新时间:2023-12-01 09:59:10 24 4
gpt4 key购买 nike

在尝试减少一些默认哈希码时,我发现您可以添加到 none 来生成 none 或生成您添加到其中的内容。这有什么特别的原因吗?这会在不同的架构上发生变化,还是我可以依赖这种能力?

DB<1> print none + 1

DB<2> print 1 + none
1

对于那些好奇的人,这就是我使用它的方式

foreach (@someArray) {
unless ($someHash{$_}++) {
$someHash{$_} = 1;
}
}

作为减少

foreach (@someArray) {
if (exists $someHash{$_}) {
$someHash{$_}++;
} else {
$someHash{$_} = 1;
}
}

最佳答案

你没有做你认为你在做的事。这两个声明:

print none + 1
print 1 + none

并不像您想象的那么简单。因为您关闭了警告,所以您不知道它们会做什么。让我们在命令提示符下尝试它们,并打开警告(-w 开关):

$ perl -lwe'print none + 1'
Unquoted string "none" may clash with future reserved word at -e line 1.
Name "main::none" used only once: possible typo at -e line 1.
print() on unopened filehandle none at -e line 1.

$ perl -lwe'print 1 + none'
Unquoted string "none" may clash with future reserved word at -e line 1.
Argument "none" isn't numeric in addition (+) at -e line 1.
1

在第一种情况下,none(裸字)被解释为文件句柄,打印语句失败,因为我们从未打开过具有该名称的文件句柄。在第二种情况下,裸词 none 被解释为字符串,通过加法运算符 + 将其转换为数字,该数字将为零 0

您可以通过为第一种情况提供特定的文件句柄来进一步阐明这一点:

$ perl -lwe'print STDOUT none + 1'
Unquoted string "none" may clash with future reserved word at -e line 1.
Argument "none" isn't numeric in addition (+) at -e line 1.
1

这表明 none + 11 + none 之间没有真正的区别。

关于perl - 添加到无如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19033267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com