是否可以使用带有惰性列表的提要?
Is it possible to use feeds with lazy lists?
这个有效:
bastille% perl6 -e 'my @squares = (1...*).map({ $_ ** 2 }); say @squares[0..^10].join: ", "'
1, 4, 9, 16, 25, 36, 49, 64, 81, 100
然而这不是:
bastille% perl6 -e 'my @squares <== map { $_ ** 2 } <== 1...*; say @squares[0..^10].join: ", "'
Cannot push a lazy list onto a Array
in block <unit> at -e line 1
为什么会这样?有没有一种方法可以将惰性列表与提要一起使用?
提要运算符 <==
将元素附加到数组。
my @s <== ^3;
@s <== <a>..<c>;
say @s
[0 1 2 a b c]
所以
my @squares <== map { $_ ** 2 } <== 1...*;
与
的工作方式类似
my @squares.append: map * ** 2, 1..*;
您可以使用带括号的项目赋值运算符 =
my @squares = ( map { $_ ** 2 } <== 1..* );
或下一个小技巧
[=] my @squares <== map { $_ ** 2 } <== 1..*;
这个有效:
bastille% perl6 -e 'my @squares = (1...*).map({ $_ ** 2 }); say @squares[0..^10].join: ", "'
1, 4, 9, 16, 25, 36, 49, 64, 81, 100
然而这不是:
bastille% perl6 -e 'my @squares <== map { $_ ** 2 } <== 1...*; say @squares[0..^10].join: ", "'
Cannot push a lazy list onto a Array
in block <unit> at -e line 1
为什么会这样?有没有一种方法可以将惰性列表与提要一起使用?
提要运算符 <==
将元素附加到数组。
my @s <== ^3;
@s <== <a>..<c>;
say @s
[0 1 2 a b c]
所以
my @squares <== map { $_ ** 2 } <== 1...*;
与
的工作方式类似my @squares.append: map * ** 2, 1..*;
您可以使用带括号的项目赋值运算符 =
my @squares = ( map { $_ ** 2 } <== 1..* );
或下一个小技巧
[=] my @squares <== map { $_ ** 2 } <== 1..*;