gpt4 book ai didi

perl - 为什么有些程序员声明变量像我的 $myvariable = shift;在 Perl 中?

转载 作者:行者123 更新时间:2023-12-05 01:09:45 24 4
gpt4 key购买 nike

我一直在关注 perlmeme.org 上的教程,一些作者以下列方式声明变量:

my $num_disks = shift || 9; # - no idea what the shift does

并在循环内
my $source = shift;
my $dest = shift;
my $how_many = shift;

当你使用
print Dumper ( $source ); 

结果是 undef

为什么你不能只使用
my $num_disks = 9;
my $source;
my $dest;
my $how_many;

声明变量?

最佳答案

shift是一个函数,它接受一个数组,删除它的第一个元素并返回该元素。如果数组为空,则返回 undef .如果 shift 没有参数,那么它会自动在 @_ 上工作子程序内部时的数组(否则它使用 @ARGV )。

函数的参数放在数组 @_ 中.

因此,如果我们编写一个带有两个参数的函数,我们可以使用 shift 两次将它们放入变量中:

sub add {
my $a = shift;
my $b = shift;
return $a + $b;
}

现在 add(3,4) 将返回 7。

符号
my $a = shift || 1;

只是一个逻辑或。这表示如果 shift 的结果是假的(例如 undef、零或空字符串)然后使用值 1。所以这是为函数参数提供默认值的常用方法。
my $a = shift // 1;

与前面的例子类似,但它仅在 shift() 时才分配默认值返回 undef .

关于perl - 为什么有些程序员声明变量像我的 $myvariable = shift;在 Perl 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com