From a019745c81d52a441bb02401c0c14bd56b2021ce Mon Sep 17 00:00:00 2001 From: kennethcheng Date: Sun, 13 Sep 2026 22:49:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:ChatGPT=E7=AC=AC=206=20=E8=AF=BE=EF=BC=9A?= =?UTF-8?q?=E5=8D=A0=E4=BD=8D=E7=AC=A6=20=5F=E3=80=81=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=8E=A8=E6=96=AD=E3=80=81=E5=8C=BF=E5=90=8D?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=AE=80=E5=86=99=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/scala/practise6/demo/Demo.scala | 62 +++++++++++++++++++ .../practise6/exercises/Exercises1.scala | 21 +++++++ .../practise6/exercises/Exercises2.scala | 21 +++++++ .../practise6/exercises/Exercises3.scala | 15 +++++ .../practise6/exercises/Exercises4.scala | 21 +++++++ .../practise6/exercises/Exercises5.scala | 30 +++++++++ .../practise6/exercises/Exercises6.scala | 10 +++ 7 files changed, 180 insertions(+) create mode 100644 src/main/scala/practise6/demo/Demo.scala create mode 100644 src/main/scala/practise6/exercises/Exercises1.scala create mode 100644 src/main/scala/practise6/exercises/Exercises2.scala create mode 100644 src/main/scala/practise6/exercises/Exercises3.scala create mode 100644 src/main/scala/practise6/exercises/Exercises4.scala create mode 100644 src/main/scala/practise6/exercises/Exercises5.scala create mode 100644 src/main/scala/practise6/exercises/Exercises6.scala diff --git a/src/main/scala/practise6/demo/Demo.scala b/src/main/scala/practise6/demo/Demo.scala new file mode 100644 index 0000000..8bd371c --- /dev/null +++ b/src/main/scala/practise6/demo/Demo.scala @@ -0,0 +1,62 @@ +package practise6.demo + +/* +第 6 课:占位符 _、参数类型推断、匿名函数简写。 +*/ +object Demo { + def main(args: Array[String]): Unit = { + /* + 这一课的目标不是单纯记住 _,而是让你看到下面这些代码时,知道它们为什么等价: + (x: Int) => x * 2 + ↓ + x => x * 2 + ↓ + _ * 2 + */ + println("====为什么等价====") + val test = (x: Int) => x * 2 + val test2: Int => Int = x => x * 2 + val test3: Int => Int = _ * 2 + println(test(10)) + println(test2(10)) + println(test3(10)) + + // filter 也一样 + println("====filter====") + val nums = List(1, 2, 3, 4, 5) + println(nums.filter(x => x >= 3)) + println(nums.filter(_ >= 3)) + + // 链式调用 + println("====链式调用====") + println(nums + .filter(x => x % 2 == 0) + .map(x => x * 10)) + + println(nums + .filter(_ % 2 == 0) + .map(_ * 10)) + + println("====一个 _ 对应一个参数====") + // 一个 _ 对应一个参数 + val double: Int => Int = _ * 2 // 一个 `_` 对应 一个参数 + + // 第一个 _ → 第一个参数,第二个 _ → 第二个参数,相当于(a, b) => a + b + val add: (Int, Int) => Int = _ + _ + val add2: (Int, Int) => Int = (a, b) => a + b + println(add(10, 20)) + println(add2(10, 20)) + + println("====再看 String====") + //再看 String,_ 并不只适用于数字。 + val names = List("Tom", "Jack", "Alice") + val resultName = names.map(x => x.toUpperCase) + val resultName2 = names.map(_.toUpperCase) + println(resultName) + println(resultName2) + val resultName3 = names.filter(x => x.length > 3) + val resultName4 = names.filter(_.length > 3) + println(resultName3) + println(resultName4) + } +} diff --git a/src/main/scala/practise6/exercises/Exercises1.scala b/src/main/scala/practise6/exercises/Exercises1.scala new file mode 100644 index 0000000..bba1267 --- /dev/null +++ b/src/main/scala/practise6/exercises/Exercises1.scala @@ -0,0 +1,21 @@ +package practise6.exercises + +/* +练习 1 + +把: +val double = (x: Int) => x * 2 +改成使用 _ 的写法。 + +要求仍然: +println(double(10)) + +输出: +20 +*/ +object Exercises1 { + def main(args: Array[String]): Unit = { + val double: Int => Int = _ * 2 + println(double(10)) + } +} diff --git a/src/main/scala/practise6/exercises/Exercises2.scala b/src/main/scala/practise6/exercises/Exercises2.scala new file mode 100644 index 0000000..e0e38be --- /dev/null +++ b/src/main/scala/practise6/exercises/Exercises2.scala @@ -0,0 +1,21 @@ +package practise6.exercises + +/* +练习 2 + +把: +nums.map(x => x * 10) +改成 _。 + +给: +val nums = List(1, 2, 3, 4, 5) + +结果: +List(10, 20, 30, 40, 50) +*/ +object Exercises2 { + def main(args: Array[String]): Unit = { + val nums = List(1, 2, 3, 4, 5) + println(nums.map(_ * 10)) + } +} diff --git a/src/main/scala/practise6/exercises/Exercises3.scala b/src/main/scala/practise6/exercises/Exercises3.scala new file mode 100644 index 0000000..4e45073 --- /dev/null +++ b/src/main/scala/practise6/exercises/Exercises3.scala @@ -0,0 +1,15 @@ +package practise6.exercises + +/* +练习 3 + +把: +nums.filter(x => x % 2 == 0) +改成 _。 +*/ +object Exercises3 { + def main(args: Array[String]): Unit = { + val nums = List(1, 2, 3, 4, 5) + println(nums.filter(_ % 2 == 0)) + } +} diff --git a/src/main/scala/practise6/exercises/Exercises4.scala b/src/main/scala/practise6/exercises/Exercises4.scala new file mode 100644 index 0000000..1e0ffb4 --- /dev/null +++ b/src/main/scala/practise6/exercises/Exercises4.scala @@ -0,0 +1,21 @@ +package practise6.exercises + +/* +练习 4 + +把: +val add: (Int, Int) => Int = (a, b) => a + b +改成 _。 + +要求: +println(add(10, 20)) + +输出: +30 +*/ +object Exercises4 { + def main(args: Array[String]): Unit = { + val add: (Int, Int) => Int = _ + _ + println(add(10, 20)) + } +} diff --git a/src/main/scala/practise6/exercises/Exercises5.scala b/src/main/scala/practise6/exercises/Exercises5.scala new file mode 100644 index 0000000..2fad539 --- /dev/null +++ b/src/main/scala/practise6/exercises/Exercises5.scala @@ -0,0 +1,30 @@ +package practise6.exercises + +/*练习 5 ⭐ + +给: +val nums = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + +只使用 _,完成: +1. 保留偶数 +2. 每个偶数乘 10 +3. 再加 1 + +最终: +List(21, 41, 61, 81, 101) + +要求尝试写成: +nums + .filter(...) +.map(...) +.map(...)*/ +object Exercises5 { + def main(args: Array[String]): Unit = { + val nums = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + val result = nums + .filter(_ % 2 == 0) + .map(_ * 10) + .map(_ + 1) + println(result) + } +} diff --git a/src/main/scala/practise6/exercises/Exercises6.scala b/src/main/scala/practise6/exercises/Exercises6.scala new file mode 100644 index 0000000..ae3e586 --- /dev/null +++ b/src/main/scala/practise6/exercises/Exercises6.scala @@ -0,0 +1,10 @@ +package practise6.exercises + +object Exercises6 { + def main(args: Array[String]): Unit = { + val add: (Int, Int) => Int = _ + _ + val multiply: (Int, Int) => Int = _ * _ + println(add(3, 4)) + println(multiply(3, 4)) + } +}