For loop perl6/rakudo:写循环变量时出现问题 #!perl6 使用v6; 我的$longest=3; 我的@list=; 对于@list->,$element为rw{ $element=sprintf“%*.*s”,$longest,$longest,$element; $element.say; }

For loop perl6/rakudo:写循环变量时出现问题 #!perl6 使用v6; 我的$longest=3; 我的@list=; 对于@list->,$element为rw{ $element=sprintf“%*.*s”,$longest,$longest,$element; $element.say; },for-loop,raku,read-write,rakudo-star,For Loop,Raku,Read Write,Rakudo Star,这很有效。但在第二次和第三次我得到一个错误消息。我怎样才能让它们工作 #!perl6 use v6; my $longest = 3; my @list = <a b c d e f>; for @list -> $element is rw { $element = sprintf "%*.*s", $longest, $longest, $element; $element.say; } #!perl6 使用v6; 我的$longest=3; 我的@l

这很有效。但在第二次和第三次我得到一个错误消息。我怎样才能让它们工作

#!perl6
use v6;

my $longest = 3;
my @list = <a b c d e f>;

for @list -> $element is rw {
    $element = sprintf "%*.*s", $longest, $longest, $element;
    $element.say;
}
#!perl6
使用v6;
我的$longest=3;
我的@list=;
对于@list$元素{
$element=sprintf“%*.*s”,$longest,$longest,$element;
$element.say;
}
#对不起===
#第11行,靠近“”处缺少块

#!perl6
使用v6;
我的$longest=3;
我的$list=;
对于$list.list->$元素为rw{
$element=sprintf“%*.*s”,$longest,$longest,$element;
$element.say;
}
#无法修改只读值
#在第1行的“&中缀:”中
#在第8行中:./perl5.pl
#在主程序体的第1行
关于第二个示例
可能在您使用的Rakudo Perl中不起作用,但在较新的版本中已修复。(这与深度解析问题有关,需要比当时更好的最长令牌匹配算法。)

关于你的第三个例子 声明

#!perl6
use v6;

my $longest = 3;
my $list = <a b c d e f>;

for $list.list -> $element is rw {
    $element = sprintf "%*.*s", $longest, $longest, $element;
    $element.say;
}

# Cannot modify readonly value
#   in '&infix:<=>' at line 1
#   in <anon> at line 8:./perl5.pl
#   in main program body at line 1
有了这一点,最后一个示例就如预期的那样工作了:

my $list = [<a b c d e f>];
pmichaud@orange:~/rakudo$cat x.p6
#!perl6
使用v6;
我的$longest=3;
我的$list=[];
对于$list.list->$元素为rw{
$element=sprintf“%*.*s”,$longest,$longest,$element;
$element.say;
}
pmichaud@orange:~/rakudo$/每6 x.p6
A.
B
C
D
E
F
pmichaud@orange:~/rakudo$
希望这有帮助

首相

my $list = <a b c d e f>;
my $list = [<a b c d e f>];
pmichaud@orange:~/rakudo$ cat x.p6
#!perl6
use v6;

my $longest = 3;
my $list = [<a b c d e f>];

for $list.list -> $element is rw {
    $element = sprintf "%*.*s", $longest, $longest, $element;
    $element.say;
}

pmichaud@orange:~/rakudo$ ./perl6 x.p6
  a
  b
  c
  d
  e
  f
pmichaud@orange:~/rakudo$