我经常使用shift解压缩函数参数:
sub my_sub {
my $self = shift;
my $params = shift;
....
}
Run Code Online (Sandbox Code Playgroud)
然而,我的同事们很多人都在讲道,这shift实际上是邪恶的.你能解释我为什么要这样做吗?
sub my_sub {
my ($self, $params) = @_;
....
}
Run Code Online (Sandbox Code Playgroud)
到shift?
让我们暂时忽略Damian Conway对任何给定子程序不超过三个位置参数的最佳实践.
以下两个示例在性能或功能方面有什么区别吗?
使用shift:
sub do_something_fantastical {
my $foo = shift;
my $bar = shift;
my $baz = shift;
my $qux = shift;
my $quux = shift;
my $corge = shift;
}
Run Code Online (Sandbox Code Playgroud)
使用@_:
sub do_something_fantastical {
my ($foo, $bar, $baz, $qux, $quux, $corge) = @_;
}
Run Code Online (Sandbox Code Playgroud)
如果两个示例在性能和功能方面相同,那么人们对一种格式的看法是什么?显然,使用的示例@_是更少的代码行,但使用它是否更清晰,shift如另一个示例所示?欢迎有良好推理的意见.