我很惊讶地发现该keys函数很适合数组:
Run Code Online (Sandbox Code Playgroud)keys HASH keys ARRAY keys EXPR返回一个列表,该列表由命名散列的所有键或数组的索引组成.(在标量上下文中,返回键或索引的数量.)
使用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
Run Code Online (Sandbox Code Playgroud)
您提供的链接实际上有一个您可能使用/不使用的重要原因keys:
作为副作用,调用keys()会重置HASH或ARRAY的内部迭代器(请参阅每个)。特别是,在 void 上下文中调用 keys() 会重置迭代器,而不会产生其他开销。
这将导致each重置到数组的开头。如果数组本身支持稀疏数组作为真正的数据类型,那么使用数组keys和与数组一起使用可能会很重要。each
话虽如此,由于 Perl 中有如此多的数组感知语言结构,例如foreach和join,我不记得上次使用0..$#array.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |