在if语句中用作右侧值的词法声明

时间:2015-07-25 22:11:37

标签: perl

比较案例1:

if (defined (my $a_var = $h->{a})) {
    # .. do some calculations with $a_var 
}

和案例2:

if (defined $h->{a}) {
    my $a_var = $h->{a};
    # .. do some calculations with $a_var 
}

使用案例1或案例2的最佳编程习惯是什么?

我认为对于案例1,我不必重复$h->{a}两次。但它也会使$a_varelsif块中的词汇变量else(无意中)可用。

另一个问题:声明的用法在perldoc.perl.org记录的另一个表达式的右侧值是什么?

(例如,像my $a = (my $b = (my $c = 3));这样的陈述完全有效..)

1 个答案:

答案 0 :(得分:1)

perldoc perlsub说:

  

my只是您可能分配给某些内容的修饰符。

也就是说,只要你有$foo,你也可以写my $foo(当然除了引用的结构)。

关于你的第一个问题,我对此没有意见。