9.9 KiB
scala_20260908
Scala 学习代码仓库,记录从 2026-09-08 开始的 Scala 学习过程。
本仓库主要用于保存:
- 线下课程中的课堂代码
- 使用 ChatGPT 辅助学习时编写的练习代码
- 对 Scala 语法、特性和容易混淆知识点的实验与验证
目前项目以 Scala 2.11.12 + JDK 8 + Maven 为主要开发环境。
一、仓库定位
这个仓库不是一个完整的业务项目,而是一个持续积累的 Scala 学习工程。
整个学习过程分成两条线:
Scala 学习
│
┌──────────┴──────────┐
│ │
chapter practise
│ │
线下课程代码 ChatGPT 辅助学习
│ │
跟随老师学习 理解 / 补充 / 练习
│ │
└──────────┬──────────┘
│
知识掌握
chapter
保存线下课程代码。
主要目标:
- 记录老师课堂上的示例代码
- 对应线下课程章节
- 保留课堂学习过程
- 方便课后复习
- 尽量保持与课堂进度一致
可以把它理解为:
课堂笔记的代码版
practise
保存自主练习代码,主要是使用 ChatGPT 辅助学习过程中产生的代码。
主要目标:
- 补充课堂知识
- 针对某个知识点单独练习
- 根据自己的理解重新实现
- 编写练习题
- 编写综合题
- 验证 Scala 语法特性
- 研究容易混淆的概念
可以把它理解为:
自己练习、实验和深入理解 Scala 的代码区
二、当前学习进度
目前已经完成 Scala 基础语法以及 方法、函数 相关内容的学习。
已学习内容
Scala 基础
│
├── 变量与常量
│ ├── val
│ └── var
│
├── 数据类型
│ ├── 类型推断
│ ├── 显式类型声明
│ ├── 基本数据类型
│ ├── 类型转换
│ └── 隐式转换
│
├── 字符串
│ ├── String
│ ├── 字符串插值
│ ├── ==
│ └── eq
│
├── 运算符
│ ├── 算术运算符
│ ├── 比较运算符
│ ├── 逻辑运算符
│ └── 赋值运算符
│
├── 流程控制
│ ├── if / else
│ ├── for
│ └── 其他基础控制结构
│
└── 方法与函数
├── def
├── 方法参数
├── 返回值
├── 函数
├── Lambda
├── 函数类型
├── 函数作为参数
└── 高阶函数基础
三、项目结构
当前源码位于 src/main/scala。
scala_20260908/
│
├── pom.xml
├── README.md
│
└── src/
└── main/
└── scala/
│
├── chapter1/
│ ├── demo1/
│ ├── demo2/
│ ├── demo3/
│ ├── demo4/
│ └── exercises/
│
├── chapter2/
│ └── demo1/
│ └── DemoMethod.scala
│
├── practise1/
│ ├── demo/
│ ├── exercises/
│ └── comprehensive/
│
└── practise2/
├── demo/
├── exercises/
└── comprehensive/
当前仓库已经按照课程和自主练习进行了明确区分。
四、目录说明
1. chapter1
线下课程第一阶段代码。
当前主要围绕 Scala 基础语法,包括:
- 变量与常量
- 数据类型
- 字符串
- 字符串插值
- 运算符
- 流程控制
- 基础练习
目录按照课堂知识点划分:
chapter1/
├── demo1/
├── demo2/
├── demo3/
├── demo4/
└── exercises/
其中:
demo
↓
课堂知识点示例
exercises
↓
课堂练习
2. chapter2
线下课程后续章节。
当前已包含:
chapter2/
└── demo1/
└── DemoMethod.scala
这一部分开始进入:
- 方法
- 方法参数
- 返回值
- 方法调用
并逐步衔接到 Scala 函数相关内容。citeturn733546view1
3. practise1
第一阶段自主练习。
目录划分为:
practise1/
├── demo/
├── exercises/
└── comprehensive/
含义:
demo
↓
针对知识点重新编写示例
exercises
↓
针对单个知识点进行练习
comprehensive
↓
综合多个知识点完成练习
4. practise2
第二阶段自主练习,目前主要围绕 方法与函数 继续学习。
目录划分为:
practise2/
├── demo/
├── exercises/
└── comprehensive/
重点包括:
def- 方法与函数的区别
- Lambda 表达式
- 函数类型
- 函数参数
- 函数返回值
- 函数作为参数
- 高阶函数基础
当前仓库中的 practise2 与 chapter2 已经开始对应方法、函数这一阶段的学习。citeturn733546view1turn733546view3
五、方法与函数核心理解
这是当前学习阶段的重要内容。
方法
使用 def 定义:
def add(a: Int, b: Int): Int = {
a + b
}
方法可以直接调用:
println(add(10, 20))
函数
函数可以赋值给变量:
val add = (a: Int, b: Int) => a + b
这里:
add
↓
函数变量名
(Int, Int) => Int
↓
函数类型
(a, b) => a + b
↓
具体的 Lambda 函数
函数作为参数
例如:
def operate(
a: Int,
b: Int,
f: (Int, Int) => Int
): Int = {
f(a, b)
}
调用:
println(
operate(
10,
20,
(a, b) => a + b
)
)
可以把它理解成:
f
↓
只是一个函数变量名
(Int, Int) => Int
↓
f 的函数类型
(a, b) => a + b
↓
传入的具体函数
f(a, b)
↓
调用这个函数
这也是 Scala 函数式编程中非常重要的基础。
六、开发环境
当前项目使用 Maven 管理。
环境
| 工具 | 版本 |
|---|---|
| JDK | 8 |
| Scala | 2.11.12 |
| Maven | 3.x |
| IDE | IntelliJ IDEA |
| scala-maven-plugin | 4.8.1 |
项目中的 pom.xml 使用 scala-maven-plugin 编译 Scala 源代码,并以 Java 8 作为编译目标。citeturn210862view1
七、运行项目
IntelliJ IDEA
推荐直接使用 IntelliJ IDEA。
操作步骤:
- 用 IDEA 打开项目
- 安装 Scala 插件
- 打开任意
.scala文件 - 找到包含
main方法的object - 右键运行
Run 'XXX.main()'
例如:
object Demo {
def main(args: Array[String]): Unit = {
println("Hello Scala")
}
}
Maven
编译:
mvn clean compile
运行指定的 Scala 主类:
mvn scala:run -DmainClass=chapter2.demo1.DemoMethod
例如自主练习中的入口:
mvn scala:run -DmainClass=practise2.demo.DemoFunction
项目当前 README 中也采用这种 Maven 运行方式。citeturn210862view2
八、学习方式
当前采用:
线下课程
↓
chapter
↓
理解老师讲解的知识
↓
ChatGPT 辅助学习
↓
practise
↓
自己重新实现
↓
练习题
↓
综合题
↓
验证和总结
学习原则
chapter:
老师怎么讲,就尽量怎么记录。
practise:
把知识真正理解并自己写出来。
两者不是两个独立的项目,而是同一个学习过程中的不同阶段。
九、代码组织原则
chapter:以课程为中心
chapter1
chapter2
chapter3
...
随着线下课程继续推进,按课程章节持续增加。
尽量不要为了代码“漂亮”而修改课堂代码结构,因为这里最重要的是:
能够快速回忆当时老师讲了什么。
practise:以理解为中心
practise1
practise2
practise3
...
每个练习阶段可以继续拆分:
demo
exercises
comprehensive
test
experiment
其中允许存在专门为了理解某个 Scala 特性而编写的实验代码。
十、推荐的学习路径
后续可以沿着下面的路线继续学习:
基础语法
↓
变量与数据类型
↓
流程控制
↓
方法与函数
↓
函数式编程基础
↓
集合
↓
高阶函数
↓
面向对象
↓
Trait
↓
继承
↓
隐式转换
↓
Scala 集合操作
↓
模式匹配
↓
Option / Either / Try
↓
并发与异步
↓
Spark
↓
大数据开发
最终目标不是只会写 Scala 语法,而是建立:
Scala 基础
+
函数式编程思维
+
面向对象编程
+
集合处理能力
+
实际项目开发能力
十一、Git 提交习惯
当前项目主要使用语义化的提交信息,例如:
feat: 线下课:流程控制、方法和函数
feat: 更新README
feat: 更新目录
后续建议继续保持简单统一的提交风格:
feat: 新增某个知识点代码
fix: 修复示例代码问题
refactor: 调整代码结构
docs: 更新README或学习说明
十二、学习记录
这个仓库会随着学习过程持续更新。
因此 README 中的内容代表的是:
当前学习进度,而不是 Scala 最终完整知识体系。
后续学习到新的内容后,继续按照下面的原则添加即可:
线下课程
→ chapter
自主学习
→ practise
这样可以长期保持仓库结构清晰,也方便以后回头复习。
License
个人 Scala 学习代码,仅用于学习、练习和知识整理。