Perl 6 中的 roundrobin

定义为

multi roundrobin(List:D: --> Seq)

用法

roundrobin LISTS

Round-Robin Merge Two Lists of Different Length


roundrobin很像 zip。不同之处是, roundrobin不会在用光元素的列表上停止而是仅仅跳过任何未定义的值:

my @a = 1;
my @b = 1..2;
my @c = 1..3;

for flat roundrobin(@a, @b, @c) -> $x { $x.say } # 1,1,1,2,2,3

它只是跳过了未定的值, 直到最长的那个列表的元素用完。

my @list1 = 'a' .. 'h';
my @list2 = <x y>;
say flat roundrobin @list1, @list2; # a x b y c d e f g h

roundrobin 返回的是一列 Seq, 所以使用 flat 进行展开。

my @list1 = 'a' .. 'h';
my @list2 = <x y>;
my $n = 3;
say flat roundrobin @list1.rotor($n - 1, :partial), @list2;

# >>>
# OUTPUT«a b x c d y e f g h»

.rotor方法把一个列表分解为子列表。

交叉两个字符串中的字符


#Given:
u = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l = 'abcdefghijklmnopqrstuvwxyz'

#Wanted:
'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'

方法一:

say join '', (u.comb Z l.comb);

方法二:

say [~] (u.comb Z l.comb);

方法三

say [~] flat (u.comb Z l.comb);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容