加餐二 | 什么是“表达式思维”?
表达式思维
- 深入了解
- 翻译
- 解释
- 总结
Kotlin编程语言的表达式思维和类型系统是本文的重点。文章通过对比Java和Kotlin的代码示例,展示了Kotlin表达式思维的简洁性和灵活性,以及Kotlin中的特殊类型Unit和Nothing的用法。Unit类型在Kotlin中不同于Java的Void或void,而是一个类,同时也是一个单例对象,在函数类型和泛型编程中有着灵活的应用。而Nothing则是Kotlin所有类型的子类型,在函数式编程中被称为底类型,它的存在有助于编译器进行代码流程的推断。此外,文章还介绍了Unit?和Nothing?这两个可空类型的特点,以及它们在函数返回值和参数类型中的应用。通过深入讨论Kotlin表达式思维和类型系统,本文为读者提供了全面了解Kotlin编程语言特点的文章。文章内容涵盖了Kotlin编程语言的特殊类型和表达式思维,对于想要深入了解Kotlin编程语言的读者具有重要参考价值。文章通过对Kotlin类型系统中的Unit和Nothing进行深入解析,展示了Kotlin语言中表达式思维的重要性和灵活性。同时,通过对Kotlin中特殊类型的介绍,读者可以更好地理解Kotlin编程语言的独特之处,为他们在实际编程中的应用提供了有力的支持。
《朱涛 · Kotlin 编程第一课》,新⼈⾸单¥59
全部留言(16)
- 最新
- 精选
- Paul Shan函数式编程要求函数是一等公民,如果某些函数不能用类型描述(例如Java中的返回为void 函数),后续的赋值,参数传递就很困难,成为一等公民就成为泡影!Kotlin中Nothing,Unit 和 Any?让所有函数的返回都有固定类型,为函数式编程奠定基础。函数的返回值必然来自于某个表达式,这也要求表达式都有固定类型。表达式是函数编程的组成模块,是串联各个函数的纽带,也是决定函数返回值的重要一环。
作者回复: 很棒的答案,推荐给大家!
2022-03-2022 - 20220106学了汉字以后,如果不懂得写作的技巧,是写不出优美的文章的。 ——理解作者想表达什么,但是写作技巧和文章优美与否不直接挂钩,除非把模板的文字当作优美。
作者回复: 嗯,确实表达的不够到位。我本意是想表达:鲁迅、莫言之类的文学作家,他们和我们都一样只是学了汉字,那他们为什么可以写出那么好的文章呢?他们和普通人的差异肯定不只是“写作技巧”那么简单,但如果我将其称为“写作思维”呢好像又有点奇怪。 也许“文学素养”更合适吧。
2022-01-2625 - better函数式,关注的是计算的输入输出,而表达式可以有输出,2者可以结合起来;也就类似: 函数式(函数式(表达式)表达式),某些情况,反过来也可以 表达式=函数式(表达式) 实现相互补充,不知道这样理解是否 ok
作者回复: “相互补充”这四个字总结很到位,赞!
2022-01-264 - PoPlus这节很受用,原来 Unit 类是 Kotlin 实现「表达式思维」的重要支撑。之前一直觉得 Unit 只不过是 void 的 Kotlin 版本罢了,没想那么多。
作者回复: 是的,理解Unit并不难,难的是理解它背后的设计意图。
2022-01-283 - Paul ShanKotlin能转成表达式语句基本都做了表达式版本,但是赋值语句照理说应该很容易转成表达式的,在某些情况也能起到简化的作用,例如把赋值表达式传给if,在if里面使用赋值创建的变量,但是Kotlin没有做,请问老师,这背后有什么考量吗?多谢
作者回复: 就我所知,Kotlin 官方非常推崇简洁语法,不希望引入过多复杂的语法进来。也许是这个原因吧。
2022-03-201 - Barry我理解kotlin建立的类型系统,才能实现表达式编程方式,进而可以实现函数式编程,确实提升了编程效率
作者回复: 很棒!
2022-03-021 - RenextNothing泛型星投影的时候的应用,后面会有讲解吗
作者回复: 这个目前没有计划,这个问题我会先记下来,看看后续实战课中能不能应用进来,但不敢保证哈。 其实,这一点Kotlin官方文档已经介绍的比较清楚了,只要你理解了Nothing,剩下的应该就不难的。 参考这里:https://kotlinlang.org/docs/generics.html#star-projections
2022-02-081 - dadada能不能快点更新呀?主要为的就是协程及后面的东西,等了这么久了协程还没有更新。。
作者回复: 放心,协程部分肯定是跑不掉的哈,先容我把基础部分讲明白,照顾一下基础不好的同学。
2022-01-2641 - vox这一章很棒
作者回复: 加油~
2022-04-25 - Shanks-王冲涛哥,我分享一个疑惑:Any与Any?描述成「虽是子类,但没有继承关系」,可以描述成Any是Any?的子类型(sub type)嘛?当然,这很容易让人联想到泛型;不过「子类型」与「继承」,在我学习Java时,有时候让人觉得很微妙:)
作者回复: 可以这么理解的,毕竟“子类”与“继承”并非等价。
2022-03-31