perl – 更常用的数据结构引用

perl – 更常用的数据结构引用,第1张

概述我一直在阅读一些perl513 * delta文件,我看到了Perl 5.14的一些新功能.从Perl 5.13.7开始,许多数组/哈希函数都可以工作 on array/hash refs as well.虽然这可能主要被视为语法糖,或Perl正在做你期望的事情,我想,这/是否应该改变在Perl中声明数据结构的范式?众所周知,它破坏了与预告片Perl的兼容性,主要使用匿名结构的争论是什么? 例如: 我一直在阅读一些perl513 * delta文件,我看到了Perl 5.14的一些新功能.从Perl 5.13.7开始,许多数组/哈希函数都可以工作 on array/hash refs as well.虽然这可能主要被视为语法糖,或Perl正在做你期望的事情,我想,这/是否应该改变在Perl中声明数据结构的范式?众所周知,它破坏了与预告片Perl的兼容性,主要使用匿名结构的争论是什么?

例如:

#!/usr/bin/env perluse 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这些函数.
> for / foreach循环需要传递一个列表,需要@ $数组
> $array始终为true,以确定编写@ $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;我的%哈希;并在您将使用过多的@ {…}或%{…}结构与适用函数的区域中使用新的语法快捷方式.

总结

以上是内存溢出为你收集整理的perl – 更常用的数据结构引用全部内容,希望文章能够帮你解决perl – 更常用的数据结构引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1255442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存