相关疑难解决方法(0)

传递参考与传递值之间有什么区别?

有什么区别

  1. 通过引用传递的参数
  2. 一个由值传递的参数?

你能给我一些例子吗?

language-agnostic pass-by-reference pass-by-value

539
推荐指数
11
解决办法
65万
查看次数

Perl子程序是按引用调用还是按值调用?

我试图弄清楚Perl子程序及其工作原理.从perlsub我知道子例程是按引用调用的,并且需要一个赋值(例如my(@copy) = @_;)来将它们转换为按值调用.

在下文中,我看到它change被引用称为"a"和"b"变为"x"和"y".但我很困惑为什么数组没有用额外的元素"z"扩展?

use strict;
use Data::Dumper;

my @a = ( "a" ,"b" );

change(@a);

print Dumper(\@a);

sub change
{
    @_[0] = "x";
    @_[1] = "y";
    @_[2] = "z";
}
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = [
          'x',
          'y'
        ];
Run Code Online (Sandbox Code Playgroud)

在下面,我传递哈希而不是数组.为什么键不能从"a"变为"x"?

use strict;
use Data::Dumper;

my %a = ( "a" => "b" );

change(%a);

print Dumper(\%a);

sub change
{
    @_[0] = "x";
    @_[1] = "y";
}
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = {
    'a' => 'y'
};
Run Code Online (Sandbox Code Playgroud)

我知道真正的 …

perl

28
推荐指数
3
解决办法
2万
查看次数