gpt4 book ai didi

perl - 使用键@array 而不是 0 .. $#array 有什么好处吗?

转载 作者:行者123 更新时间:2023-12-04 14:18:08 24 4
gpt4 key购买 nike

我很惊讶地发现 keys 函数愉快地与数组一起工作:

keys HASH
keys ARRAY
keys EXPR

Returns a list consisting of all the keys of the named hash, or the indices of an array. (In scalar context, returns the number of keys or indices.)



使用 keys @array有什么好处吗?而不是 0 .. $#array关于内存使用、速度等,或者这个功能的原因更像是一个历史起源?

看到了 keys @array高达 $[修改,我猜这是历史性的:
$ perl -Mstrict -wE 'local $[=4; my @array="a".."z"; say join ",", keys @array;'
Use of assignment to $[ is deprecated at -e line 1.
4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29

最佳答案

我认为马克有一部分是正确的。他所缺少的是每个现在都在一个数组上工作,并且,就像每个带有散列的每个一样,每个带有数组的每个调用都会返回两个项目。哪里each %hash 返回键和值,each @array 还返回键(索引)和值。

while (my ($idx, $val) = each @array)
{
if ($idx > 0 && $array[$idx-1] eq $val)
{
print "Duplicate indexes: ", $idx-1, "/", $idx, "\n";
}
}

感谢 Zaid 的询问,以及 jmcnamara在 perlmonks 的 CB 上提出来。我以前没有看到这个 - 我经常遍历一个数组并想知道我在哪个索引处。这比手动操作一些要好得多 $i在循环外部创建并在内部递增的变量,正如我所期望的那样 continue , redo等,会更好地生存下去。

所以,因为我们现在可以使用 each在数组上,我们需要能够重置该迭代器,因此我们有 keys .

关于perl - 使用键@array 而不是 0 .. $#array 有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983438/

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