feat:更新README
This commit is contained in:
@@ -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 学习代码,仅用于学习、练习和知识整理。
|
||||
|
||||
Reference in New Issue
Block a user