编程范式--函数式编程
从一个题目说起
题目:读入一个文本文件,确定所有单词的使用频率并从高到低排序,打印出所有单词及其频率的排序列表。
传统的解决方案
函数式解决方案
命令式和函数式区别
-
命令式编程风格常常迫使我们出于性能考虑,把不同的任务交织起来,以便能够用一次循环来完成多个任务。在面向对象的命令式编程语⾔里面,重用的单元是类和类之间沟通⽤的消息,比如方法。
-
而函数式编程用 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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,让我们一起共同成长!