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