摘要:
1. 默认方法 1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀 1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法 1.2. Collection接口 1.2.1. stream方法 1.3. Iterable接口 1.3.1. forEach方法 阅读全文
摘要:
1. 方法引用 1.1. 一种引用方法的轻量级语法 1.1.1. 提供了一种简短的语法 1.1.2. 标准语法为Classname::methodName 1.2. 凡是使用Lambda表达式的地方,就可以使用 1.3. 自动支持多个参数 1.3.1. 前提是选对了正确的函数接口 2. 出现顺序 2 阅读全文
摘要:
1. 外部迭代 1.1. for循环是一个封装了迭代的语法糖 1.1.1. 本质上来讲是一种串行化操作 1.2. 很难抽象出不同操作 2. 内部迭代 2.1. 内部迭代中的相应接口:Stream 2.2. 和Iterator类似,Stream是一种内部迭代方式 2.3. 内部迭代将更多控制权交给了集 阅读全文
摘要:
1. Java 8函数式编程 1.1. 没有单子 1.2. 没有语言层面的惰性求值 1.3. 没有为不可变性提供额外支持 1.4. 集合类可以拥有一些额外的方法:default方法 2. 现实世界中,数据和行为并存 2.1. 面向对象编程是对数据进行抽象 2.2. 函数式编程是对行为进行抽象 3. 阅读全文
摘要:
1. 基本信息 编程与类型系统 Programming With Types:Examples in TypeScript [美] 弗拉德·里斯库迪亚(Vlad Riscutia) 著,赵利通 译 机械工业出版社,2021年1月出版 1.1. 读薄率 书籍【真实】字数17.5万字,笔记总字数1929 阅读全文
摘要:
1. Java 8 1.1. 除了增加函数式特性,还增加了一些配合使用的语法糖衣 1.2. 函数式接口 1.2.1. SAM(Single Abstract Method,单抽象方法)接口 1.2.1.1. 含有单一方法的接口是Java的一种习惯用法 1.2.1.2. Runnable和Callab 阅读全文
摘要:
1. 语言的分类 1.1. 静态类型 1.1.1. 要求我们事先指定变量和函数的类型 1.2. 动态类型 1.2.1. 允许推迟指定类型 1.3. 强类型 1.3.1. 变量“知道”自己的类型 1.3.1.1. 允许反射和对实例作类型测试,且一直保有自身的类型信息 1.4. 弱类型 1.4.1. 语 阅读全文
摘要:
1. 观点 1.1. 抽象隐藏了繁杂的细节,只是有时候会连同重要的考虑因素一起隐藏掉 1.2. 理解掌握的抽象层次永远要比日常使用的抽象层次更深一层 1.3. 交出控制权的观点:放弃对繁琐细节的掌控,关注问题域,而非关注问题域的实现 2. 函数式思维的好处 2.1. 将低层次细节(如垃圾收集)的控制 阅读全文
摘要:
1. 命令式编程 1.1. 按照“程序是一系列改变状态的命令”来建模的一种编程风格 1.2. 传统的for循环 1.2.1. 确立初始状态 1.2.2. 每次迭代都执行循环体中的一系列命令 1.2.2.1. 将操作安排在循环内部去执行 1.3. Java 1.3.1. 消除了垃圾收集的麻烦 2. 函 阅读全文
摘要:
1. 范式转变 1.1. 学习一种全新的编程范式,困难并不在于掌握新的语言 1.1.1. 真正考验人的,是怎么学会用另一种方式去思考 1.2. 计算机科学的间歇式进步,好思路有时搁置数十年后才变成主流 1.3. 第一种面向对象的语言Simula 67是1967年发明的,可是直到1983年诞生的C++ 阅读全文