perl6 - 参数赋值
perl6 - assignment to parameter
有没有办法对形式参数进行赋值?
类似于:
sub myfunc($n) {
$n = $n + 5;
return $n;
}
或者,我是否必须创建一个新变量并将 $n 的值赋给它?
您可以在参数上使用 is copy
特征:
sub myfunc($n is copy) {
$n = $n + 5;
return $n;
}
有关详细信息,请参阅 https://docs.raku.org/type/Signature#index-entry-trait_is_copy。
作为 你可能想使用 is copy
.
但是,如果您真的打算改变用作该函数参数的变量,则可以使用 is rw
特征:
my $num = 3;
mutating-func($num);
say $num; # prints 8
sub mutating-func($n is rw) {
$n = $n + 5;
return $n;
}
但是如果你传递一个不可变的对象(比如一个数字而不是一个变量),这会让你很容易出错:
# dies with "Parameter '$n' expected a writable container, but got Int value"
say mutating-func(5); # Error since you can't change a value
sub mutating-func($n is rw) {
$n = $n + 5;
return $n;
}
有没有办法对形式参数进行赋值?
类似于:
sub myfunc($n) {
$n = $n + 5;
return $n;
}
或者,我是否必须创建一个新变量并将 $n 的值赋给它?
您可以在参数上使用 is copy
特征:
sub myfunc($n is copy) {
$n = $n + 5;
return $n;
}
有关详细信息,请参阅 https://docs.raku.org/type/Signature#index-entry-trait_is_copy。
作为 is copy
.
但是,如果您真的打算改变用作该函数参数的变量,则可以使用 is rw
特征:
my $num = 3;
mutating-func($num);
say $num; # prints 8
sub mutating-func($n is rw) {
$n = $n + 5;
return $n;
}
但是如果你传递一个不可变的对象(比如一个数字而不是一个变量),这会让你很容易出错:
# dies with "Parameter '$n' expected a writable container, but got Int value"
say mutating-func(5); # Error since you can't change a value
sub mutating-func($n is rw) {
$n = $n + 5;
return $n;
}