首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >编程范式--函数式编程

编程范式--函数式编程

作者头像
Wu_Candy
发布2022-07-04 20:20:20
发布2022-07-04 20:20:20
1K0
举报
文章被收录于专栏:无量测试之道无量测试之道
这是无量测试之道的第173篇原创

从一个题目说起

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

传统的解决方案

函数式解决方案

命令式和函数式区别

  1. 命令式编程风格常常迫使我们出于性能考虑,把不同的任务交织起来,以便能够用一次循环来完成多个任务。在面向对象的命令式编程语⾔里面,重用的单元是类和类之间沟通⽤的消息,比如方法。
  2. 而函数式编程用 map()、filter() 这些高阶函数把我们解放出来,让我们站在更高的抽象层次上去考虑问题,把问题看得更清楚。函数式编程语言实现重⽤的思路很不一样。 函数式语言提倡在有限的几种关键数据结构 (如 list、set、map)上运用针对这些数据结构高度优化过的操作,以此构成基本的运转机构。开发者再根据具体用途,插⼊⾃己的数据结构和⾼阶函数去调整机构的运转⽅式。

再来一题

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

解题代码:

代码语言:javascript
复制
        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)

end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从一个题目说起
    • 传统的解决方案
    • 函数式解决方案
    • 命令式和函数式区别
    • 再来一题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档