我已经在序列中看到了 Perl 6 的任何 (...) 运算符的示例,并且我试图找出如何执行涉及乘法的序列。
运算符执行以下操作,如果以某些数字开头,则可以指定其后的数字序列。
@natural = 1,2 ... *;
@powersOfTwo = 1,2,4 ... *;
等等。
还可以使用序列中前面的数字定义一个序列,如斐波那契数字(如 question 所示),其中执行以下操作:
@fibonacci = 1,1, *+* ... *;
问题是乘法运算符是
*
前面的数字也用 *
表示.虽然我可以使用
+
定义一个序列, -
和 /
,我似乎找不到使用 *
定义序列的方法.我尝试了以下方法:
@powers = 1,2, *** ... *;
但它显然不起作用。
有谁知道如何做到这一点?
最佳答案
一方面,Perl 6 对空格很敏感。
1, 2, * * * ... *
是完全合法的,并生成一个有点像乘法斐波那契数列的序列;只是有点难读。
***
和 * * *
意味着不同的东西。如果歧义困扰您,您可以使用显式块而不是使用“任何明星”为您提供的隐式块:
1, 2, -> $a, $b { $a * $b } ... *
和
1, 2, { $^a * $^b } ... *
两者都产生与
1, 2, * * * ... *
相同的序列确实(在 Rakudo 中测试)。
关于perl - 与 Perl 6 序列任意 (...) 运算符的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7853049/