zoukankan      html  css  js  c++  java
  • 编程范式--函数式编程

    从一个题目说起 

    题目:读入一个文本文件,确定所有单词的使用频率并从高到低排序,打印出所有单词及其频率的排序列表。

    传统的解决方案

    图片

     

    函数式解决方案

    图片

    命令式和函数式区别

    1. 命令式编程风格常常迫使我们出于性能考虑,把不同的任务交织起来,以便能够用一次循环来完成多个任务。在面向对象的命令式编程语⾔里面,重用的单元是类和类之间沟通⽤的消息,比如方法。

    2. 而函数式编程用 map()、filter() 这些高阶函数把我们解放出来,让我们站在更高的抽象层次上去考虑问题,把问题看得更清楚。函数式编程语言实现重⽤的思路很不一样。

      函数式语言提倡在有限的几种关键数据结构 (如 list、set、map)上运用针对这些数据结构高度优化过的操作,以此构成基本的运转机构。开发者再根据具体用途,插⼊⾃己的数据结构和⾼阶函数去调整机构的运转⽅式。

    再来一题

    题目:找到一个字符串里面某个字符数组里面第一个出现的字符的位置。比如“Hello, World”,[“a”, “e”, “i”, “o”, “u”],那 e 是在字符串第一个出现的字符,位置是 1, 返回 1

    解题代码:

            let words = "h e l l o w o r l d"
            let compare = ["a", "e", "i", "o", "u"]
            let wordsList = words.split(separator: " ")
            var index = 0
            zip(wordsList, compare).filter { $0 == $1}.map { (sub, str) in
                index = wordsList.firstIndex(of: sub) ?? 0
            }
            print(index)

    欢迎关注【无量测试之道】公众号,回复【领取资源】
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     添加关注,让我们一起共同成长!

  • 相关阅读:
    【Zookeeper】分布式服务框架 Zookeeper -- 管理分布式环境中的数据
    【Consul】 分布式环境中的服务注册和发现利器
    springboot集成springsession利用redis来实现session共享
    OpenResty初涉
    java面试之闭包(closure)
    集合框架学习之Guava Collection
    本地缓存
    VLFeat在matlab和vs中安装
    HashCode与Equals回顾
    集合工具类CollectionUtils、ListUtils、SetUtils、MapUtils的使用
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/14349782.html
Copyright © 2011-2022 走看看