编程范式--函数式编程

从一个题目说起 

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

传统的解决方案

图片

 

函数式解决方案

图片

命令式和函数式区别

  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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

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

原文地址:https://www.cnblogs.com/Wu13241454771/p/14349782.html