朱涛 · Kotlin 编程第一课
朱涛
Google 认证的 Kotlin、Android 开发者专家,博客“Kotlin Jetpack 实战”作者
6717 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
朱涛 · Kotlin 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

加餐一 | 初识Kotlin函数式编程

你好,我是朱涛。在上一节实战课当中,我们算是用 Kotlin 实践了一把函数式编程的思想。不过,上节课我们其实只是浅尝辄止,也不完全算是函数式编程,咱们只是借鉴了它的思想。
函数式编程(Functional Programming),是一个跟“面向对象”类似的概念,它也是软件工程中的一种编程范式,它是声明式编程(Declarative Programming)的一种,而与它相反的,我们叫做命令式编程(Imperative Programming)。
虽然说,Kotlin 的函数式编程还不属于主流,但近几年它的关注度也越来越高了,所以今天我们就借着这节加餐,一起来简单聊聊 Kotlin 的函数式编程,也为上一节实战课做一个延伸。这样,等将来你想深入研究 Kotlin 函数式编程的时候,有了这节课的认知基础,也会更加轻松。

函数式与命令式的区别

那么,在介绍函数式编程之前,我们首先要来看几个编程范式的概念:声明式、命令式,还有四个常见的编程范式:函数式、逻辑式、面向过程、面向对象。它们之间的关系大致如下图所示:
我们的校园里学习编程的时候,一般都是学的 C、Java,它们分别是面向过程语言、面向对象语言的代表,它们都属于“命令式”的范畴。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kotlin函数式编程初探 Kotlin函数式编程初探文章深入探讨了函数式编程范式及其在Kotlin中的应用。函数式编程作为一种声明式编程范式,与命令式编程有着明显的区别,本文从函数式与命令式的对比入手,介绍了函数式编程的核心概念:函数是一等公民和纯函数。通过比较命令式和函数式的代码,阐述了函数式编程的优势,如简洁性和可读性。文章还以实例展示了Kotlin函数式编程的应用,包括使用高阶函数进行集合操作和递归替代循环。总结指出,Kotlin支持多种编程范式,开发者可以根据问题灵活选择不同的范式进行编程。文章以简洁明了的语言,为读者提供了对Kotlin函数式编程的初步了解和实践指引。文章还对函数式编程的优劣势进行了探讨,指出函数式编程在开发效率高、可读性强以及适合并发编程等方面具有优势,但也存在学习曲线陡峭和性能较差的劣势。最后,文章展望了Kotlin函数式编程的未来,认为随着Android推出Jetpack Compose声明式UI框架和Kotlin官方推出的Compose Multiplatform,Kotlin函数式编程的关注度将进一步提升。整体而言,本文为读者提供了对Kotlin函数式编程的全面了解,并展望了其未来发展前景。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《朱涛 · Kotlin 编程第一课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 夜月
    函数式编程更多的是带来方便: 1. 更少地声明临时变量 2.使用库或者标准api更方便 但是我个人觉得,引入大量库后,全局作用域的扩展函数过多时,也会导致ide的函数选择提示过长,容易出错。

    作者回复: 嗯,总结的挺好。所以,要注意控制全局作用域的扩展数量。

    2022-01-18
    6
  • 阿辛
    感觉比慕课的讲得好. 慕课的kotlin讲的比较难

    作者回复: 感谢你的认可,我们一起加油~

    2022-02-19
    3
  • better
    个人感觉,在使用 kt 函数式方法的时候,最好看一下此方法的实现,否则就容易造成时间复杂度更高,比如:在不知不觉中 for 嵌套了(我还在展示,你看代码多简洁哈),这也是一个性能方面的问题吧

    作者回复: 嗯,没错。

    2022-01-15
    3
  • PoPlus
    想了解不变性无状态等特点更适合并发编程的原因~

    作者回复: 简单解释: 多线程同步问题,往往都是由于“共享可变状态”导致的。如果拥有“不变性”的话,是不是就少了些麻烦呢?并发里面,最麻烦的就是同步问题,解决了同步问题后,并发就没那么可怕了。

    2022-01-20
    2
  • 7Promise
    函数式编程在我理解中和函数单一功能原则有关系,将各个功能分解成尽量少代码的函数,运用在各个可能存在的地方。再加上巧妙运用kotlin自带或者自己编写的高级函数以及拓展函数。

    作者回复: 赞~

    2022-01-14
    1
  • Durian_
    我有点不太理解这句话: 无副作用的函数,它具有引用透明的特性。 这个透明是什么意思呢?

    作者回复: 这个概念三言两语还真解释不清楚,你可以留意我的博客吧,我会在我的博客里延伸讲讲Kotlin函数式编程。

    2022-05-27
  • vox
    请问既然函数式和命令式各有优劣,那么在Android日常开发中哪些场景中建议使用函数式的写法呢?

    作者回复: 比如:频繁的集合操作时。

    2022-04-25
    2
  • better
    有些地方,比如 list 类型的类成员,如使用函数式,比如:filter 某些,形成新的 list,确实可以避免并发编程的状态问题,但是,每次都fitler成本也是很大的,此时需要取舍了:是弄一个新的成员变量记录 filter 后的 list,还是直接函数式过滤(如果 list 很大,filter 函数式函数经常调用,性能问题,就需要考虑了)

    作者回复: 是的,对于数据量较大的情况,直接使用集合操作符是可能引起性能问题的。不过Kotlin在这方面也做了一些补充,比如使用Sequence或者是Flow。

    2022-01-28
    2
  • 侯金博
    醍醐灌顶,拨云见日

    作者回复: 加油~

    2022-01-18
  • 杨浩
    才接触kotlin,个人理解如果是Android,kotlin就是生产力值得深耕,绝大多数情况kotlin即可,少数需要高性能的用java。 我的理解如果是用在服务端,kotlin适合高并发、IO类的应用,不适合计算型。

    作者回复: 不错的见解。Android领域如果追求极致的性能的话,会用C++的,所以Java的地位反而比较尴尬。服务端的话,差不多也是这样,只是说Java在服务端的护城河更深一些。

    2022-01-16
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部