sid*_*com 2 for-loop pass-by-reference rakudo raku
#!perl6
use v6;
my $list = 'a' .. 'f';
sub my_function( $list ) {
for ^$list.elems -> $e {
$list[$e].say;
}
}
my_function( $list );
Run Code Online (Sandbox Code Playgroud)
首先我用perl5风格尝试过这个,但它不起作用:
for @$list -> $e {
$e.say;
}
# Non-declarative sigil is missing its name at line ..., near "@$list -> "
Run Code Online (Sandbox Code Playgroud)
我怎么能在perl6中这样做?
你不要在Perl 6中取消引用这样的变量.只需使用 for $list
但这可能不会做你想做的事情.'a'..'f'不会在Perl 6中构造一个列表,而是一个名为的内置数据类型Range.你可以检查一下say $list.WHAT.要将其转换为列表并迭代每个元素,您可以使用for $list.list