zoukankan      html  css  js  c++  java
  • 善用foreach,map 和 grep

    1. 通过foreach来进行列表元素的只读遍历

    如果是仅仅要遍历列表中的所有元素,那么foreach循环就已经足够了。

    另外,所有用到foreach的地方都可以改用等价的简写名for.

    2.用map函数从现有列表延展出新列表

    如果是从现有列表推导出新列表,请使用map函数。

    my @sizes = map {-s} @files ;
    my @sizes = map -s,@files;
    my @stem = map {/(.*)\.txt$/} @files
    my ($from) = map /^From:\s+(.*)$/,@message_lines ;

    map 在做数据转换时,返回模式匹配操作符m//内部圆括号捕获的数据。 因为这是一个列表上下文,所以m//返回要么是没有匹配的空列表,要是匹配时找到的结果集而成的列表。

    出于对性能的考虑,对原始列表内容改变的话,就改用foreach 循环。

    使用map操作,要明确他的意义在于返回相应的列表数据,而不是用作控制结构做一堆杂事。

    3.用foreach修订列表元素的内容

    如果要修改列表元素的内容,请使用foreach 循环。 和map 和 grep 一样,循环体中的控制变量其实是列表当前元素的别名。所以修改变量,实际就是修改原始数据

    #移除数组中各个元素的数字
    foreach (@array) {tr /0-9//d }
    
    #使用s/// De版本,更慢一些
    foreach (@array) {s/\d//g}

    4. 用grep 筛选列表元素

    grep 比较特别,一般用于刷选列表元素或对元素计数

    grep 块的第一个参数,不管是表达式还是代码块,都是标量上下文中的。

    在标量上下文中,grep 返回的是符合条件的元素的个数,而不是元素列表。

  • 相关阅读:
    剑指Offer-用两个栈实现队列
    剑指Offer-从尾到头打印链表
    滑动门技术实现
    解决keil5中文注释乱码方法
    faker数据填充详解
    redis在微博与微信等互联网应用笔记
    JDBC插入中文数据出现?号地解决问题
    idea配置less自动编译
    idea使用Vue的v-bind,v-on报错
    idea 代码部分格式化
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2939047.html
Copyright © 2011-2022 走看看