相关疑难解决方法(0)

为了处理Perl子程序参数,'转移'是邪恶的吗?

我经常使用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?

parameters perl shift iterable-unpacking

27
推荐指数
4
解决办法
1万
查看次数

对于子程序参数,Perl的移位与来自@_的赋值之间是否存在差异?

让我们暂时忽略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如另一个示例所示?欢迎有良好推理的意见.

parameters perl subroutine

15
推荐指数
3
解决办法
6083
查看次数

标签 统计

parameters ×2

perl ×2

iterable-unpacking ×1

shift ×1

subroutine ×1