素材阁

Scala 语法速查

共 26 条 Scala 常用语法,覆盖基础语法、函数与高阶、类与特质、集合、命令行工具 五组内容。支持搜索与分类筛选,点击即可复制。

基础语法

val 不可变、var 可变。

语法 / 命令说明
只读与可变变量(类型可推断)
显式类型声明
字符串插值
模式匹配
if 是表达式,可直接返回值

函数与高阶

函数是一等公民。

语法 / 命令说明
方法与默认参数
函数值(匿名函数)
映射(也可写 list.map(_ * 2))
过滤(_ 占位)
左折叠归约
递归

类与特质

case class 与 trait。

语法 / 命令说明
类与构造参数(val 自动成为字段)
样例类(自动 equals / copy / 模式匹配)
单例对象(类似静态)
特质(类似接口,可带实现)
继承与实现(extends with)
用样例类做模式匹配提取字段

集合

不可变集合为主。

语法 / 命令说明
列表与向量
映射
分组与排序
去重、取前若干、展平
归约与求和

命令行工具

sbt / scala-cli。

语法 / 命令说明
启动 REPL
直接运行脚本
在 sbt 项目中编译 / 运行 / 测试
清理并打包

使用说明

Scala 语法速查:基础语法、函数与高阶、类与特质、集合、命令行工具;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:基础语法、函数与高阶、类与特质、集合、命令行工具。
  2. 点「语法 / 命令」列复制片段,替换类型与集合名。
  3. 数据载体优先用 case class;集合变换优先用 map / filter / fold。
  4. 构建用 sbt(见 Maven / Gradle 速查亦可对照)。

常见问题

val 和 var 有什么区别?
val 是不可变引用(赋值后不能重新指向),var 可变。Scala 鼓励尽可能用 val,让代码更易推理、更利于并发。
case class 和普通 class 有什么区别?
case class 自动生成 equals、hashCode、toString 与 copy,并支持模式匹配解构,非常适合表示不可变数据。
trait 和 Java 接口有什么区别?
trait 可以有方法实现与字段,一个类可混入多个 trait(with),比 Java 接口更灵活;Java 8 后接口也有了默认方法,二者理念趋同。
map 里的 _ 是什么意思?
下划线是参数占位符,list.map(_ * 2) 等价于 list.map(x => x * 2);多参数场景要写清楚,如 foldLeft(0)(_ + _)。

延伸阅读

相关工具