- 论坛徽章:
- 0
|
这几天Larry引入了一个新的list操作符,我觉得比较有趣。所以今天来讲讲:
要介绍的操作符名叫series,写起来也很简单: ... #三个小圆点
恩,没错!和perl5的 ..很像嘛。(实际上,在perl6中, 1..10也还是可以用的,不过分的细了点,还多了ff操作符。以后有时间一起讲。)
样子像,在功能上也是很像的,只是功能上更强大:
1 ... {$_ + 1}; # 1,2,3,4............
1,1 ... {$a + $b} # 1,1,2,3........... fib
从上面的简单例子可以看出,所谓series操作符,就是用一个function做一个iterator, 所以我们还可以有更多更有想象力的操作:
() ... &rand # 随机序列
1 ... {-$_} # 1, -1, 1, -1............
False ... &prefix:<!> # False, True, False...
当然, 可以通过if语句,来限制iterator:
1 ... { $_ + 1 if $_ < 10 } #1..10
... { $_ + 10 if $_ < 100 } # 10,20,30......90
... { $_ + 100 if $_ < 1000 } # 100, 200......900
1 ... {$_ + 1 if @_ <10} # 也可以, 不过性能有损失
按照spec规定,简单的数学,几何级数,可以自动判断出来:
1, 3, 5 ... * # 奇数序列
1, 2, 4 ... * # power 2 序列
好了, 基本的介绍就是这么多,大家可以多想想用法,然后看看有什么漏洞。这个操作符是Larry前几天弄得,所以现在还没有什么perl6版本实现它,大家就过过干瘾吧!;) |
评分
-
查看全部评分
|