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 返回的是符合条件的元素的个数,而不是元素列表。

  • 相关阅读:
    L2-011 玩转二叉树 二叉树
    L2-010 排座位 并查集
    L2-009 抢红包
    VS 编译报错:意外的字符
    关于js的类型转换
    github相关操作总结
    关于时间的相关处理
    uniapp实现简单的动画效果(不使用dom操作)
    uniapp选择日期
    vue使用音频组件
  • 原文地址:https://www.cnblogs.com/tjxwg/p/2939047.html
Copyright © 2011-2022 走看看