在Perl中使用map或grep

前端之家收集整理的这篇文章主要介绍了在Perl中使用map或grep前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经写了perl代码全职几个月了(生物信息学),我一直在努力提高我的技能.就在今天,对我来说,我从不使用地图或grep.回顾我的代码,我意识到这些工具可以在这里或那里节省几条线,但只能牺牲foreach循环的灵活性.我的问题如下:

有没有任何情况下你使用map或grep在foreach / for循环中带来了显着的优势,除了保存一两行代码

谢谢你的时间!

解决方法

Schwartzian Transform将是一个例子:
@sorted = map  { $_->[0] }
          sort { $a->[1] cmp $b->[1] }
          map  { [$_,foo($_)] }
          @unsorted;

你可以用一堆foreach循环来做,但你必须把它们分开来弄清楚发生了什么;一旦你看到了Schwartzian变换,你会立即认出成语.

一般来说,我认为地图和grep都很好,因为它们允许您清晰而紧凑地表达您的意图,而不需要语法层面.如果你看到一张地图,那么你知道某种简单的数据结构转换正在进行;如果你看到一个grep,那么你知道一些过滤/选择正在进行.你可以用foreach来完成所有的操作,但你的代码的意图不像map或grep那么清楚,你甚至可以用if和goto这样做,如果你想,但是你的意图将被埋在更多的语法和状态跟踪下.

猜你在找的Perl相关文章