Perl中的嵌套解除引用箭头:省略或不省略?
在Perl中,当你有一个嵌套的数据结构时,允许省略取消引用箭头到2d和更多嵌套级别.换句话说,以下两个语法是相同的:
my $hash_ref = { 1 => [ 11,12,13 ],3 => [31,32] }; my $elem1 = $hash_ref->{1}->[1]; my $elem2 = $hash_ref->{1}[1]; # exactly the same as above 现在,我的问题是,是否有充分的理由选择一种风格而不是另一种风格? 它似乎是风格争论的流行骨头(Just on SO,我不小心在5分钟内碰到了this和this). 到目前为止,几乎所有通常的嫌疑人都没有明确表示: > perldoc只是说“你可以省略指针解除引用箭头”.
>更新的“中级Perl”,根据其合着者brian d foy,建议省略箭头.请参阅下面的brian的完整答案. 就个人而言,我站在“总是放箭头,因为它更可读,更明显他们正在处理参考”. 更新更具体的re:可读性,在多嵌套表达式的情况下,下标本身是表达式,箭头通过更明显地将下标彼此分开来帮助“在视觉上标记化”表达式. 解决方法
除非您真的喜欢打字或排长队,否则不要在不需要时使用箭头.下标旁边的下标意味着引用,因此有能力的程序员不需要额外的线索来解决这个问题.
我不同意额外的箭头更具可读性.让他们将这个词的有趣部分进一步远离彼此是绝对不同寻常的. 在Intermediate Perl,我们实际教导参考,我们告诉你省略不必要的箭头. 另外,请记住没有“可读性”这样的东西.只有你(和其他人)训练你的眼睛才能识别为模式.你不会逐字逐句地阅读它们,然后弄清楚它们的含义.您可以看到之前见过的事物组并识别它们.在您所讨论的基本语法级别,您的“可读性”只是您识别模式的能力.您使用它越多,识别模式就越容易,因此您现在所做的事情对您来说更具“可读性”并不奇怪.新的风格起初看起来很奇怪,但最终变得更容易识别,因此更具“可读性”. 您在评论中提供的示例不难阅读,因为它缺少箭头.用箭头读起来仍然很难: $expr1->[$sub1{$x}]{$sub2[$y]-33*$x3}{24456+myFunct($abc)} $expr1->[$sub1{$x}]->{$sub2[$y]-33*$x3}->{24456+myFunct($abc)} 我编写这样的代码,使用这些变量名称来提醒下一个编码器每个级别的容器类型: my $index = $sub1{$x}; my $key1 = $sub2[$y]-33*$x3; my $key2 = 24456+myFunct($abc); $expr1->[ $index ]{ $key1 }{ $key2 }; 为了做得更好,将细节隐藏在子程序中(这就是它们的用途:)所以你永远不必直接使用那些混乱的数据结构.这比任何一个都更具可读性: my $value = get_value( $index,$key1,$key2 ); my $value = get_value( $sub1{$x},$sub2[$y]-33*$x3,24456+myFunct($abc) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |