模块:莫霍::收藏

名称

Mojo::集合-集合

简介

使用Mojo::Collection;#操作集合my$collection=Mojo::collection->new(qw(just works));unshift@$集合,'it';说$collection->join(“\n”);#链方法$collection->map(sub{ucfirst})->shuffle->each(sub($word,$num){说出“$num:$word”;});#使用替代构造函数使用Mojo::Collection qw(c);c(qw(abc))->join('/')->url_escape->say;

描述

Mojo::系列是集合的基于数组的容器。

#直接访问数组以操作集合my$collection=Mojo::collection->new(1..25);$集合->[23]+=100;说@$collection;

功能

Mojo::系列实现以下功能,这些功能可以单独导入。

c(c)

我的$集合=c(1,2,3);

构建一个新的基于阵列的Mojo::系列对象。

方法

Mojo::系列实现以下方法。

TO_JSON(_J)

my$array=$collection->TO_JSON;

的别名“阵列(_A)”.

契约

我的$new=$collection->compact;

使用定义的所有元素而不是空字符串创建新集合。

# "0, 1, 2, 3"c(0,1,undef,2,'',3)->压缩->连接(',');

每个

my@elements=$collection->each;$collection=$collection->each(子{…});

为集合中的每个元素求值回调,如果未提供任何元素,则将所有元素作为列表返回。元素将是传递给回调的第一个参数,也可以作为$_.

#制作编号列表$集合->每个(sub($e,$num){说出“$num:$e”;});

第一

我的$first=$collection->first;我的$first=$collection->first(qr/foo/);my$first=$collection->first(sub{…});我的$first=$collection->first('some_method');my$first=$collection->first('somemethod',@args);

为集合中的每个元素求值正则表达式/回调或调用方法,并返回与正则表达式匹配的第一个元素,或回调/方法返回true的第一个。元素将是传递给回调的第一个参数,也可以作为$_.

#较长版本我的$first=$collection->first(子{$_->somemethod(@args)});#查找包含单词“mojo”的第一个值my$interest=$collection->first(qr/mojo/i);#查找大于5的第一个值我的$greater=$collection->first(sub{$_>5});

压扁

my$new=$collection->扁平化;

递归展平嵌套集合/数组,并创建一个包含所有元素的新集合。

# "1, 2, 3, 4, 5, 6, 7"c(1,[2,[3,4],5,[6]],7)->扁平->连接(',');

格雷普

my$new=$collection->grep(qr/foo/);my$new=$collection->grep(sub{…});my$new=$集合->grep('some_method');my$new=$collection->grep('somemethod',@args);

为集合中的每个元素计算正则表达式/回调或调用方法,并创建一个新集合,其中包含与正则表达式匹配的所有元素,或者回调/方法返回true的所有元素。元素将是传递给回调的第一个参数,也可以作为$_.

#较长版本my$new=$collection->grep(sub{$_->somemethod(@args)});#查找包含单词“mojo”的所有值my$interesting=$collection->grep(qr/mojo/i);#查找所有大于5的值my$greater=$collection->grep(sub{$_>5});
我的$new=$集合->头(4);我的$new=$集合->头(-2);

创建一个新集合,从集合的开头开始,最多包含指定数量的元素。负数将从末尾开始计数。

#“A B C”c('A','B','c','D','E')->头部(3)->连接('');#“A B”c('A','B','c','D','E')->头部(-3)->连接('');

参加

我的$stream=$collection->join;我的$stream=$collection->join(“\n”);

将集合转换为Mojo::ByteStream.

#用逗号连接所有值$collection->join(',')->say;

最后的

my$last=$collection->last;

返回集合中的最后一个元素。

地图

my$new=$collection->map(sub{…});my$new=$collection->map('some_method');my$new=$collection->map('somemethod',@args);

评估集合中每个元素的回调或调用方法,并根据结果创建一个新集合。元素将是传递给回调的第一个参数,也可以作为$_.

#较长版本my$new=$collection->map(子{$_->somemethod(@args)});#将单词“mojo”附加到所有值我的$mojoified=$collection->map(子{$_.'mojo'});

新的

my$collection=Mojo::collection->new(1,2,3);

构建一个新的基于阵列的Mojo::系列对象。

减少

my$result=$collection->reduce(sub{…});my$result=$collection->reduce(sub{…},$initial);

使用回调减少集合中的元素并返回其最终结果,设置美元十亿美元每次执行回调时。第一次美元将设置为可选的初始值或集合中的第一个元素。从那时起美元将设置为回调的返回值,而十亿美元将始终设置为集合中的下一个元素。

#计算所有值的总和my$sum=$collection->reduce(子{$a+$b});#统计每个值在集合中出现的频率我的$hash=$collection->reduce(子{$a->{$b}++;$a},{});

颠倒

我的$new=$collection->reverse;

创建一个所有元素顺序相反的新集合。

洗牌

我的$new=$collection->洗牌;

创建一个新集合,其中所有元素按随机顺序排列。

大小

我的$size=$collection->size;

集合中的元素数。

分类

my$new=$collection->sort;my$new=$collection->sort(sub{…});

根据回调的返回值对元素进行排序,并根据结果创建新集合,设置美元十亿美元对于要比较的元素,每次执行回调时。

#排序值区分大小写我的$caseinsensitive=$collection->sort(sub{uc($a)cmpuc($b)});

my$new=$collection->tail(4);我的$new=$collection->tail(-2);

创建一个新集合,从集合末尾开始,最多包含指定数量的元素。负数将从头开始计数。

#“C D E”c('A','B','c','D','E')->尾部(3)->连接('');#“D E”c('A','B','c','D','E')->尾部(-3)->连接('');

水龙头

$collection=$collection->tap(子{…});

的别名Mojo::Base中的“tap”.

到阵列(_A)

我的$array=$collection->to_array;

将集合转换为数组引用。

uniq公司

my$new=$collection->uniq;my$new=$collection->uniq(sub{…});my$new=$collection->uniq('some_method');my$new=$collection->uniq('somemethod',@args);

创建一个没有重复元素的新集合,使用元素的字符串表示或回调/方法的返回值来确定唯一性。请注意未定义和空字符串的处理方式相同。

#较长版本my$new=$collection->uniq(sub{$_->somemethod(@args)});#“foo bar baz”c('foo','bar','bar,'baz')->uniq->join('');# "[[1, 2], [2, 1]]"c([1,2],[2,1],[3,2])->uniq(sub{$_->[1]})->to_array;

带孔(_R)

my$new_class=Mojo::Collection->with_roles('Mojo:;Collection::Role::One');my$new_class=Mojo::Collection->with_roles('+One','+Two');$collection=$collection->with_roles('+One','+Two');

的别名Mojo::Base中的“with_roles”.

另请参阅

Mojolicious公司,Mojolicious::指南,https://mojolicio.org网站.