feat:更新README

This commit is contained in:
2026-09-10 22:38:33 +08:00
parent 714b2a2b18
commit cbdcc1d13c
+393 -61
View File
@@ -1,89 +1,421 @@
# scala_20260908
Scala 学习笔记工程,记录 2026-09-08 线下课内容。
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 # Maven 配置:JDK 8 + scala-maven-plugin 4.8.1
└── src/main/scala/
├── Hello.scala # 入口:Hello world
├── demo1/
│ └── DemoVar.scala # val vs var
├── demo2/
│ ├── DemoStr.scala # 字符串 + s 插值 + == / eq
│ └── DemoVar2.scala # 数据类型 + 隐式转换 + 强制转换
├── demo3/
│ └── DemoOps.scala # 算术 / 比较 / 逻辑 / 赋值运算符
└── practise1/ # 课堂练习
├── Demo1VarAndVal.scala # val / var 基础
├── Demo2Type.scala # 类型推断 vs 显式声明
├── Demo3StringInterpolation.scala # s 插值
├── Demo4If.scala # if 表达式
├── Practise1.scala # 练习:基本变量输出
├── Practise2.scala # 练习:判断年龄
├── Practise3.scala # 练习:四则运算
├── Practise4.scala # 练习:成绩分级
└── Overall.scala # 综合练习
│
├── pom.xml
├── README.md
│
└── src/
└── main/
└── scala/
│
├── chapter1/
│ ├── demo1/
│ ├── demo2/
│ ├── demo3/
│ ├── demo4/
│ └── exercises/
│
├── chapter2/
│ └── demo1/
│
├── practise1/
│ ├── demo/
│ ├── exercises/
│ └── comprehensive/
│
└── practise2/
├── demo/
├── exercises/
└── comprehensive/
```
## 环境要求
---
- JDK 8
- Scala 2.11.12
- Maven 3.x(`pom.xml` 已配好 `scala-maven-plugin` 4.8.1)
- IntelliJ IDEA(可选,装 Scala 插件即可直接运行)
## 六、代码组织原则
## 运行方式
### chapter
### 命令行(Maven)
以**课程章节**为核心:
先编译:
```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=Hello
mvn scala:run -DmainClass=demo1.DemoVar
mvn scala:run -DmainClass=demo2.DemoStr
mvn scala:run -DmainClass=demo2.DemoVar2
mvn scala:run -DmainClass=demo3.DemoOps
mvn scala:run -DmainClass=practise1.Demo1VarAndVal
mvn scala:run -DmainClass=practise1.Demo2Type
mvn scala:run -DmainClass=practise1.Demo3StringInterpolation
mvn scala:run -DmainClass=practise1.Demo4If
mvn scala:run -DmainClass=practise1.Practise1
mvn scala:run -DmainClass=practise1.Practise2
mvn scala:run -DmainClass=practise1.Practise3
mvn scala:run -DmainClass=practise1.Practise4
mvn scala:run -DmainClass=practise1.Overall
mvn scala:run -DmainClass=chapter2.demo1.DemoMethod
```
### IntelliJ
或者:
1. 用 IDEA 打开本目录
2. 装 Scala 插件(首次会提示)
3. 打开任意 `.scala` 文件,右键 `Run 'XXX.main()'`
```bash
mvn scala:run -DmainClass=practise2.demo.DemoFunction
```
## 重点速记
---
- `val` 定义常量(不能重新赋值),`var` 定义变量。**优先用 `val`**
- Scala 的 `==` 等价于 Java 的 `equals`(比较内容),`eq` 才等价于 Java 的 `==`(比较地址)
- `s"..."` 是字符串插值,表达式用 `${...}`
- `if` 在 Scala 里是**表达式**,可以直接 `val x = if (cond) a else b`
- 整数除法默认向 0 取整(`10 / 3 == 3`),想要小数至少一边要 `.0`
- `Byte → Long` 隐式转换合法,`Long → Byte` 必须 `.toByte`,且可能溢出(129 → -127)
## 九、学习记录原则
这个仓库不追求一次性把 Scala 所有知识整理完整,而是随着学习过程持续更新。
因此:
```text
chapter
= 课程真实学习进度
practise
= 自主学习与练习进度
```
以后学习到新的内容后,继续按照这个规则添加即可。
---
## 十、后续学习方向
随着 Scala 学习深入,预计逐步涉及:
```text
基础语法
↓
流程控制
↓
方法与函数
↓
集合
↓
面向对象
↓
Trait
↓
继承
↓
函数式编程
↓
高阶函数
↓
隐式转换
↓
Scala 集合操作
↓
Spark / 大数据开发
```
最终希望通过:
```text
课堂学习
+
ChatGPT辅助学习
+
大量练习
```
逐步建立完整的 Scala 编程能力。
---
## License
私有学习笔记,暂不外发。
个人 Scala 学习代码,仅用于学习、练习和知识整理。