Perv中的Schwartzian变换?

前端之家收集整理的这篇文章主要介绍了Perv中的Schwartzian变换?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
my @output =
map $_->[0],sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],@array;

有人可以更详细地解释代码吗?我不能得到它的头或尾..

解决方法

从下往上阅读:
@array

一个数组(文件名,以后使用).

map [$_,

对于每个文件名,获取对两元素匿名数组的引用,第一个元素是文件名,第二个元素是文件的字节大小. map返回这些数组引用的列表.

sort{$a->[1] <=> $b->[1]}

通过增加文件大小对数组引用列表进行排序.

map $_->[0],

将数组引用列表转回到文件名列表中,但现在按排序顺序.

my @output =

将列表保存在@output中.

这相当于:

my @output = sort { -s $a <=> -s $b } @array;

但只能获得每个文件的大小一次,而不是按排序进行每次比较一次.

原文链接:https://www.f2er.com/Perl/172843.html

猜你在找的Perl相关文章