7

我已经在序列中看到了 Perl 6 的任何 (...) 运算符的示例,并且我试图找出如何执行涉及乘法的序列。

运算符执行以下操作,如果以一些数字开头,则可以指定其后面的数字序列。

@natural = 1,2 ... *;
@powersOfTwo = 1,2,4 ... *;

等等。还可以使用序列中的先前数字定义一个序列,如斐波那契数(显示在这个问题中),其中一个执行以下操作:

@fibonacci = 1,1, *+* ... *;

问题是乘法运算符 is*并且前面的数字也用 表示*

虽然我可以使用和定义序列+,但我似乎无法找到使用 定义序列的方法。-/*

我尝试了以下方法:

@powers = 1,2, *** ... *;

但这显然不起作用。

有谁知道怎么做?

4

2 回答 2

14

一方面,Perl 6 对空格很敏感。

1, 2, * * * ... *

是完全合法的,并生成一个类似于乘法斐波那契的序列;只是有点难以阅读。**** * *意味着不同的东西。

如果歧义困扰您,您可以使用显式块而不是使用“whatever star”给您的隐式块:

1, 2, -> $a, $b { $a * $b } ... *

1, 2, { $^a * $^b } ... *

两者都产生相同的序列1, 2, * * * ... *(在 Rakudo 中测试)。

于 2011-10-21T17:54:15.827 回答
2
my @powers_of_two := { 1, 2, { $^a * 2 } ... *);

my $n = 6;
my @powers_of_six := { 1, $n, { $^a * $n } ... *);
于 2011-10-21T17:56:53.980 回答