raku - 如何使make子程序参数为readwrite

标签 raku

假设我有一个交换两个给定参数的子程序。从逻辑上讲,它需要具有读写参数。

sub swap($l, $r)
{
   my $tmp = $l;
   $l=$r;
   $r=$tmp;
}

我收到错误:

Cannot assign to a read only variable ($l) or a value



我不认为我可以尝试\$param就像在 perl5 中一样。

我想我应该尝试一下 :=但文档没有提到有关函数参数的任何内容。

如何将参数作为对该子例程的引用传递以便更改其值?

最佳答案

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

关于raku - 如何使make子程序参数为readwrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470688/

相关文章:

regex - 为什么 Perl 6 语法原型(prototype)的正文中不能有任何内容?

regex - 在 Perl 6 中匹配非空白字符

raku - 在 Raku 中获得 Bag 收藏中值(value)最高的元素

list-comprehension - Perl 6 列表理解

concurrency - 是否可以从另一个 Promise 中终止 Promise 的代码块?

raku - 在 Perl 6 中,如何使用 NativeCall 接口(interface)将原始字节转换为浮点?

perl-module - 安装模块 Perl 6 失败 - 没有可用于 Perl v6.c 的编译器

raku - 馈送运算符(operator)管道的行为

operators - Unicode字符的文档在哪里,例如 "»",对于Raku?

raku - 一个 perl6 模块可以有条件地 'use' 另一个 perl6 模块吗?