如何使用 Perl 6 中的“列表理解”创建非平方列表(即平方根不是整数的整数)?我从 Rosetta Code 中发现了以下代码,显示了如何打印非正方形列表。
sub nth_term (Int $n) { $n + round sqrt $n }
say nth_term $_ for 1 .. 22;
我对列表理解的理解是,它是一种声明方式,类似于set-builder notation,用编程语言描述列表。
到目前为止,我注意到的最接近的事情是使用for
关键字。但由于这实际上只是一个内联循环,我认为这不是技术上的列表理解,即使它看起来很相似:
my @y = ($_**2 + 1 for 1 .. 10);
但是,我真正想知道的是,是否有一种“列表理解”方式来创建任何数学上可描述的列表,例如非正方形。下面是我如何强制创建一个非正方形列表(最多 30 个):
my @non_squares = grep {sqrt($_) != floor(sqrt($_))}, 1 .. 30;
作为列表理解,我怎么能做到这一点?