422 lines
6.5 KiB
Markdown
422 lines
6.5 KiB
Markdown
# scala_20260908
|
||
|
||
Scala 学习代码仓库,记录从 2026-09-08 开始的 Scala 学习过程。
|
||
|
||
本仓库的代码主要分为两部分:
|
||
|
||
```text
|
||
chapter/
|
||
↓
|
||
线下课程学习代码
|
||
|
||
practise/
|
||
↓
|
||
使用 ChatGPT 辅助学习的练习代码
|
||
```
|
||
|
||
两部分代码虽然都属于 Scala 学习内容,但定位不同。
|
||
|
||
---
|
||
|
||
## 一、目录说明
|
||
|
||
### chapter —— 线下课程
|
||
|
||
`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
|
||
Scala 学习
|
||
│
|
||
┌──────────┴──────────┐
|
||
│ │
|
||
chapter practise
|
||
│ │
|
||
线下课程代码 ChatGPT辅助学习
|
||
│ │
|
||
老师怎么讲就怎么写 自己理解 / 补充 / 练习
|
||
│ │
|
||
└──────────┬──────────┘
|
||
│
|
||
最终掌握
|
||
```
|
||
|
||
其中:
|
||
|
||
`chapter` 负责**跟着课程学习**。
|
||
|
||
`practise` 负责**把知识真正练会**。
|
||
|
||
---
|
||
|
||
## 三、当前学习内容
|
||
|
||
目前已经开始学习 Scala 基础语法。
|
||
|
||
### chapter
|
||
|
||
主要对应线下课程,目前包括:
|
||
|
||
```text
|
||
Scala 基础语法
|
||
├── 变量
|
||
├── 数据类型
|
||
├── 字符串
|
||
├── 字符串插值
|
||
├── 运算符
|
||
├── 流程控制
|
||
└── 方法 / 函数
|
||
```
|
||
|
||
---
|
||
|
||
### practise
|
||
|
||
目前主要围绕已经学习的 Scala 基础知识进行练习:
|
||
|
||
```text
|
||
变量与常量
|
||
↓
|
||
数据类型
|
||
↓
|
||
字符串
|
||
↓
|
||
字符串插值
|
||
↓
|
||
if 表达式
|
||
↓
|
||
方法
|
||
↓
|
||
函数
|
||
↓
|
||
函数参数
|
||
↓
|
||
函数返回值
|
||
↓
|
||
综合练习
|
||
```
|
||
|
||
---
|
||
|
||
## 四、学习方式
|
||
|
||
整个学习过程采用:
|
||
|
||
```text
|
||
线下课程
|
||
↓
|
||
chapter
|
||
↓
|
||
理解课堂知识
|
||
↓
|
||
ChatGPT辅助学习
|
||
↓
|
||
practise
|
||
↓
|
||
独立练习 / 综合练习
|
||
↓
|
||
进一步理解 Scala
|
||
```
|
||
|
||
其中 `chapter` 和 `practise` 并不是两个独立的课程,而是同一个学习过程中的两个部分。
|
||
|
||
---
|
||
|
||
## 五、项目结构
|
||
|
||
```text
|
||
scala_20260908/
|
||
│
|
||
├── pom.xml
|
||
├── README.md
|
||
│
|
||
└── src/
|
||
└── main/
|
||
└── scala/
|
||
│
|
||
├── chapter1/
|
||
│ ├── demo1/
|
||
│ ├── demo2/
|
||
│ ├── demo3/
|
||
│ ├── demo4/
|
||
│ └── exercises/
|
||
│
|
||
├── chapter2/
|
||
│ └── demo1/
|
||
│
|
||
├── practise1/
|
||
│ ├── demo/
|
||
│ ├── exercises/
|
||
│ └── comprehensive/
|
||
│
|
||
└── practise2/
|
||
├── demo/
|
||
├── exercises/
|
||
└── comprehensive/
|
||
```
|
||
|
||
---
|
||
|
||
## 六、代码组织原则
|
||
|
||
### chapter
|
||
|
||
以**课程章节**为核心:
|
||
|
||
```text
|
||
chapter1
|
||
chapter2
|
||
chapter3
|
||
...
|
||
```
|
||
|
||
尽量保持课堂代码的原始结构,不为了“代码漂亮”而过度修改。
|
||
|
||
这样做的主要目的是:
|
||
|
||
> 能够回到对应章节,快速回忆老师当时讲了什么。
|
||
|
||
---
|
||
|
||
### practise
|
||
|
||
以**学习和练习**为核心:
|
||
|
||
```text
|
||
practise1
|
||
practise2
|
||
practise3
|
||
...
|
||
```
|
||
|
||
可以根据学习过程自由增加:
|
||
|
||
```text
|
||
demo
|
||
exercises
|
||
comprehensive
|
||
test
|
||
experiment
|
||
```
|
||
|
||
等目录。
|
||
|
||
这里允许出现为了理解某一个 Scala 特性而专门编写的小实验代码。
|
||
|
||
---
|
||
|
||
## 七、环境
|
||
|
||
当前项目使用 Maven 管理。
|
||
|
||
主要环境:
|
||
|
||
```text
|
||
JDK 8
|
||
Scala 2.11.12
|
||
Maven 3.x
|
||
IDEA IntelliJ IDEA
|
||
```
|
||
|
||
项目通过 `scala-maven-plugin` 编译 Scala 代码。
|
||
|
||
---
|
||
|
||
## 八、运行代码
|
||
|
||
推荐使用 IntelliJ IDEA 打开项目。
|
||
|
||
找到需要运行的 `.scala` 文件,例如:
|
||
|
||
```scala
|
||
object Demo {
|
||
def main(args: Array[String]): Unit = {
|
||
println("Hello Scala")
|
||
}
|
||
}
|
||
```
|
||
|
||
直接运行:
|
||
|
||
```text
|
||
Run 'Demo.main()'
|
||
```
|
||
|
||
也可以使用 Maven:
|
||
|
||
```bash
|
||
mvn clean compile
|
||
```
|
||
|
||
运行指定 Scala 主类:
|
||
|
||
```bash
|
||
mvn scala:run -DmainClass=chapter2.demo1.DemoMethod
|
||
```
|
||
|
||
或者:
|
||
|
||
```bash
|
||
mvn scala:run -DmainClass=practise2.demo.DemoFunction
|
||
```
|
||
|
||
---
|
||
|
||
## 九、学习记录原则
|
||
|
||
这个仓库不追求一次性把 Scala 所有知识整理完整,而是随着学习过程持续更新。
|
||
|
||
因此:
|
||
|
||
```text
|
||
chapter
|
||
= 课程真实学习进度
|
||
|
||
practise
|
||
= 自主学习与练习进度
|
||
```
|
||
|
||
以后学习到新的内容后,继续按照这个规则添加即可。
|
||
|
||
---
|
||
|
||
## 十、后续学习方向
|
||
|
||
随着 Scala 学习深入,预计逐步涉及:
|
||
|
||
```text
|
||
基础语法
|
||
↓
|
||
流程控制
|
||
↓
|
||
方法与函数
|
||
↓
|
||
集合
|
||
↓
|
||
面向对象
|
||
↓
|
||
Trait
|
||
↓
|
||
继承
|
||
↓
|
||
函数式编程
|
||
↓
|
||
高阶函数
|
||
↓
|
||
隐式转换
|
||
↓
|
||
Scala 集合操作
|
||
↓
|
||
Spark / 大数据开发
|
||
```
|
||
|
||
最终希望通过:
|
||
|
||
```text
|
||
课堂学习
|
||
+
|
||
ChatGPT辅助学习
|
||
+
|
||
大量练习
|
||
```
|
||
|
||
逐步建立完整的 Scala 编程能力。
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
个人 Scala 学习代码,仅用于学习、练习和知识整理。
|