From cbdcc1d13c98df0da077f31a4fffb709661ffc38 Mon Sep 17 00:00:00 2001 From: kennethcheng Date: Thu, 10 Sep 2026 22:38:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=9B=B4=E6=96=B0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 454 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 393 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index c8427a7..2dbca6d 100644 --- a/README.md +++ b/README.md @@ -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 学习代码,仅用于学习、练习和知识整理。