Scala 学习资料
Apr 15, 2018·
·
5 min read

Shenghui (Samuel) Gu
记录一些 Scala 的学习资料,感谢 @hongjiang_wang 的整理。 原帖地址
Akka
模式匹配
- 话说模式匹配(1) 什么是模式?
- 话说模式匹配(2) scala 里是怎么实现的?
- 话说模式匹配(3) 模式匹配的核心功能是解构!
- 话说模式匹配(4) 赋值语句与模式匹配
- 话说模式匹配(5) for 表达式中的模式匹配
- 话说模式匹配(6) case 类的细节
- 话说模式匹配(7) 一个构造器模式的例子(by case class)
- 话说模式匹配(8) 一个抽取器的例子
类型相关
- scala 类型系统:1) 类型与类
- scala 类型系统:2) classOf 与 getClass 方法的差异
- scala 类型系统:3) 单例类型
- scala 类型系统:4) 内部类,路径依赖类型&类型投影
- scala 类型系统:5) 结构类型
- scala 类型系统:6) 复合类型与 with 关键字
- scala 类型系统:7) 中缀类型
- scala 类型系统:8) type 关键字
- scala 类型系统:9) this 别名&自身类型
- scala 类型系统:10) 交集类型与联合类型
- scala 类型系统:11) upper bounds & lower bounds
- scala 类型系统:12) view bounds
- scala 类型系统:13) context bounds
- scala 类型系统:14) multiple bounds
- scala 类型系统:15) 协变与逆变
- scala 类型系统:16) 函数类型
- scala 类型系统:17) 结构类型的细节问题
- scala 类型系统:18) 不稳定(volatile)类型
- scala 类型系统:19) Manifest 与 TypeTag
- scala 类型系统:20) 数组类型
- scala 类型系统:21) type specialization 与类爆炸
- scala 类型系统:22) 类型约束与特定方法
- scala 类型系统:23) 用类型证明实现联合类型
- scala 类型系统:24) 理解 higher-kinded-type
- scala 类型系统:25) type lambda
- scala 类型系统:26) type classes 模式
- scala 类型系统:27) 回顾常见的 type classes
- scala 类型系统:28) 依赖类型
- scala 类型系统:case class 与代数数据类型
- scala 类型系统:类型推导
- scala 类型系统:柯里-霍华德同构
- scala 类型系统:值类型与数组
- scala 类型系统:Null 与 Nothing,造型问题
- scala 类型系统:值类型的细节
- scala 类型系统:通用特质(universal traits)
- scala 类型系统:值类型的装箱问题
- scala 类型系统:值类型的一些限制
Shapeless
类型推导相关
Spray
Monads & Monoids
- 我所理解的 monad(0)
- 我所理解的 monad(1):半群(semigroup)与幺半群(monoid)
- 我所理解的 monad(2):fold 与 monoid
- 我所理解的 monad(3):半群(semigroup)与并行运算
- 我所理解的 monad(4):函子(functor)是什么
- 我所理解的 monad(5):自函子(Endofunctor)是什么
- 我所理解的 monad(6):从组合子(combinator)说起
- 我所理解的 monad(7):把 monad 看做行为的组合子
翻译&笔记
- Programming in Scala 的阅读笔记
- Effective Scala 中文版
- 翻译 monads-are-elephants 第一部分
- 翻译 monads-are-elephants 第二部分
- 翻译 monads-are-elephants 第三部分
Scala pitfalls
- scala 雾中风景(0): 序
- scala 雾中风景(1): lambda 表达式的缩写
- scala 雾中风景(2): 小括号与花括号
- scala 雾中风景(3): for 表达式的背后
- scala 雾中风景(4): Unit 类型
- scala 雾中风景(5): 中缀表达
- scala 雾中风景(6): 内部类与模式匹配
- scala 雾中风景(7): val x:Int = x + 1 的问题
- scala 雾中风景(8): 高阶函数与 Unit 的谜题
- scala 雾中风景(9): List(1,2,3) == Seq(1,2,3) ?
- scala 雾中风景(10): 逆变点与协变点
- scala 雾中风景(11): isInstanceOf 与类型擦拭
- scala 雾中风景(12): App 特质的延迟初始化
- scala 雾中风景(13): 模式匹配中的逻辑或
- scala 雾中风景(14): trait 的泛型参数为何不支持 context bounds
- scala 雾中风景(15): class A { type T }与 class A[T] {}
- scala 雾中风景(16): println(1,2,3)为什么 work?
- scala 雾中风景(17): toSet()的谜题
- scala 雾中风景(18): postfix operator 的问题
- scala 雾中风景(19): MutableList 与 mutable.LinkedList 的问题
- scala 雾中风景(20): MutableList 迭代器的 bug
- scala 雾中风景(21): auto-tupling 与 auto-detupling
- scala 雾中风景(22): var 变量与赋值操作符
- scala 雾中风景(23): Nothing 类型引发的 NullPointerException
- scala 雾中风景(24): break 与异常捕获
- scala 雾中风景(25): try-finally 表达式的类型推导
- scala 雾中风景(26): 变量查找的问题
诊断
- scala 的诊断方法(1) 使用-Xprint:typer 看语法糖的背后
- scala 的诊断方法(2) 在 repl 下用 reify 查看表达式的翻译结果
- scala 的诊断方法(3) 在 repl 下统计方法的执行时间
- scala 的诊断方法(4) -Ytyper-debug 编译项
- scala 的诊断方法(5) 用 scalac-aspects 诊断 scalac 各阶段耗时
函数与函数式风格
- 无参方法与小括号问题
- scala 中的无参方法与统一访问原则
- scala 中的 eta-conversion
- 闭包变量绑定问题
- 如何写一段符合 scala 语言习惯的快速排序
- Any.##方法与 hashCode 的区别
- scala 中的有名参数
- map 函数,隐式参数 CanBuildFrom 的细节
- scala 中函数类型的多态
- scala 不是函数式语言,与 Ocaml 的对比
- foldLeft 与 foldRight
- 再谈 eta-conversion 与 eta-expansion
- 柯里化(currying)与构造器(Builder)模式
集合相关
- 对 tuple 进行迭代
- String 当作集合处理时的方法
- scala 中集合的交集、并集、差集
- Tuple1 的存在意义?
- 为什么 scala 中的 tuple 定义了 22 个(Tuple22)?
- 二元组箭头表达式背后的语法糖
- 通过 List.apply 方法构造 List 的背后逻辑
API pitfalls
REPL 相关
Scala 2.10+
- scala2.10 中 eval 一段 script
- scala2.10.1 的 repl 下:cp 命令不能工作
- scala2.10 中采纳了 SIP-18:模块化语言特性
- scala2.10 里的 for 表达式已经不允许对变量声明 val
- scala2.11 编译环节的一些变动: delambdafy
- scala2.11 编译器对 lint 的增强
未分类
- lazy 变量与双重检测锁(DCL)
- scala 里的静态代理(static-forwarders)
- 统计诗经中最常使用的叠词
- scala2.9 中@serializable 注释已不鼓励使用
- import root.xxx 中的_root_前缀表示 xxx 包名是绝对路径
- scala 中执行外部命令(scala.sys.process)
- classloader 问题:import my.package._ 是否会 load 该包下所有的 class?
- scala 中有 Unicode 的关键字
- Any 类的源码在哪儿?
- scala 编译器的一个 bug
- scala bug 系列:2.10 编译器把单例当作类型的 bug
- scala 里模拟 javascript/python 里的生成器的效果
- null 造型为值类型时为何不抛异常
- Int 与 Integer 的拆箱问题
- Scala 函数式编程中文版已上架
- scalastyle 工具
分享与交流
- 分享 ppt: scala 中的函数与闭包
- 与 19 楼的交流
- 上海 scala 爱好者聚会(2013)
- 阿里技术嘉年华 2013
- 2013 华东 scala 爱好者聚会(杭州)
- 华东地区 scala 爱好者聚会(2014 上海)
- 华东地区 scala 爱好者聚会(2015 上海)
- Scala 在挖财的应用实践
- ArchSummit 北京 2015 小记