perl – 更常用的数据结构引用
发布时间:2020-12-16 06:25:51 所属栏目:大数据 来源:网络整理
导读:我一直在阅读一些perl513 * delta文件,我看到了Perl 5.14的一些新功能.从Perl 5.13.7开始,许多数组/哈希函数都可以工作 on array/hash refs as well.虽然这可能主要被视为语法糖,或Perl正在做你期望的事情,我想,这/是否应该改变在Perl中声明数据结构的范式?
我一直在阅读一些perl513 * delta文件,我看到了Perl 5.14的一些新功能.从Perl 5.13.7开始,许多数组/哈希函数都可以工作
on array/hash refs as well.虽然这可能主要被视为语法糖,或Perl正在做你期望的事情,我想,这/是否应该改变在Perl中声明数据结构的范式?众所周知,它破坏了与预告片Perl的兼容性,主要使用匿名结构的争论是什么?
例如: #!/usr/bin/env perl use strict; use warnings; use 5.13.7; my $hashref = { english => 'hello',spanish => 'hola',french => 'bon jour' }; foreach my $greeting (keys $hashref) { say $hashref->{$greeting}; #use say since we need a later version anyway } 而不是使用命名散列(%hash)的更传统方式. 附:如果看到这是增强的,我可以改为CW,但我很想听到一些观点. 解决方法
在引用上使用某些数组和散列函数的能力只是语法糖,不需要影响你使用第一级复数结构的方式.有几个原因:
鉴于我的$array = [1 … 10] >列表处理函数,如map,grep,sort,reverse,print,say,printf等等,仍然需要传递正确的列表,所以这意味着使用@ $array与更简单的@array这些函数. while ($array) { infinite loop } while (@$array) { what you probably wanted } while (@array) { no room for error here } >将一个真正的@array子脚本化为$array [$idx]比$array-> [$idx]稍微快一些(~15%),因为每次访问都不需要取消引用.由于散列函数的开销,与散列的差异较小,约为3%. 基本上,通过转移到所有引用,您将获得需要使用解除引用标记的不同功能集.相反,利用pre v5.13.7功能来宣告即时使用我的@array;我的%哈希;并在您将使用过多的@ {…}或%{…}结构与适用函数的区域中使用新的语法快捷方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |