如何使make子程序参数为readwrite
How do make make subroutine parameter as readwrite
假设我有一个交换两个给定参数的子程序。逻辑上需要有读写参数。
sub swap($l, $r)
{
my $tmp = $l;
$l=$r;
$r=$tmp;
}
我收到错误:
Cannot assign to a read only variable ($l) or a value
我认为我不能像在 perl5 中那样尝试 $param
。
我想我应该尝试使用 :=
,但文档没有提及任何有关函数参数的内容。
如何将参数作为引用传递给此子例程,以便我可以更改其值?
sub swap ( $l is rw, $r is rw ) {
($r,$l) = ($l,$r)
}
my $a = 1;
my $b = 2;
swap $a, $b;
say $a; # 2;
my @a[2] = 1,2;
swap |@a;
say @a; # [2 1]
您也可以使用 reverse
来完成您想要完成的任务。
my $a = 1;
my $b = 2;
($a,$b) .= reverse;
say $a; # 2
say $b; # 1
假设我有一个交换两个给定参数的子程序。逻辑上需要有读写参数。
sub swap($l, $r)
{
my $tmp = $l;
$l=$r;
$r=$tmp;
}
我收到错误:
Cannot assign to a read only variable ($l) or a value
我认为我不能像在 perl5 中那样尝试 $param
。
我想我应该尝试使用 :=
,但文档没有提及任何有关函数参数的内容。
如何将参数作为引用传递给此子例程,以便我可以更改其值?
sub swap ( $l is rw, $r is rw ) {
($r,$l) = ($l,$r)
}
my $a = 1;
my $b = 2;
swap $a, $b;
say $a; # 2;
my @a[2] = 1,2;
swap |@a;
say @a; # [2 1]
您也可以使用 reverse
来完成您想要完成的任务。
my $a = 1;
my $b = 2;
($a,$b) .= reverse;
say $a; # 2
say $b; # 1