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(1,2,3);
构建一个新的基于阵列的Mojo::系列对象。
Mojo::系列实现以下方法。
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”.
我的$array=$collection->to_array;
将集合转换为数组引用。
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;
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网站.