From e68d4877c496284050b6af03eb92d0dbe068bc04 Mon Sep 17 00:00:00 2001 From: SOR <3272194354@qq.com> Date: Fri, 18 Sep 2026 07:02:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=95=E5=85=A5=EF=BC=8C?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=BC=BA=E5=A4=B1=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Learning/引入Kotlin.md | 18 ++++-------------- Learning/引入Kotlin_fast.md | 18 +++++------------- README.md | 6 +++--- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/Learning/引入Kotlin.md b/Learning/引入Kotlin.md index 3a7b03b..b06722b 100644 --- a/Learning/引入Kotlin.md +++ b/Learning/引入Kotlin.md @@ -665,6 +665,8 @@ val func: (Int, String) -> String = { number, text -> `(Int, String) -> String` 表示:接收一个 `Int` 和一个 `String`,返回一个 `String`。 +可以用 `::funcName` 把一个函数用作 lambda 变量。 + ### 高阶函数 如果函数的参数或返回值是函数,它就是高阶函数: @@ -804,20 +806,6 @@ val length = name!!.length 如果 `name` 真的是 `null`,这里会抛出异常。除非你非常确定,否则不要随便用 `!!`。 -### let 处理可空值 - -`let` 可以让一段代码只在对象非空时执行: - -```kotlin -val name: String? = "Kotlin" - -name?.let { - println("长度是 ${it.length}") -} -``` - -如果 `name` 是 `null`,`let` 里面的代码不会执行。 - ### 安全转换 类型转换时,可以用 `as?`,转换失败会返回 `null`,而不是抛异常: @@ -916,6 +904,8 @@ println(copied) // User(id=1, name=Bob) [目录](../README.md) +[先回顾所学内容:引入 Kotlin fast](./引入Kotlin_fast.md) + [下一篇:深入 Kotlin](./深入Kotlin.md) [进入 KMP](./进入KMP.md) \ No newline at end of file diff --git a/Learning/引入Kotlin_fast.md b/Learning/引入Kotlin_fast.md index 4474a8c..bd6317e 100644 --- a/Learning/引入Kotlin_fast.md +++ b/Learning/引入Kotlin_fast.md @@ -85,14 +85,6 @@ val length = nullableName?.length ?: 0 - `?:`:左边为 `null` 时使用右边的值。 - `!!`:强制非空,如果为 `null` 会抛异常。如果使用 Java 函数,会发现所有的函数返回值都是可空类型,因而有时会大量使用。 -也可以用 `let`: - -```kotlin -nullableName?.let { - println("长度是 ${it.length}") -} -``` - ### 定义普通函数 在 Kotlin 里面,Java / Cpp 的 void $\Leftrightarrow$ Kotlin 的 Unit @@ -243,7 +235,7 @@ interface Named { } ``` -`data class` 适合保存数据,会自动生成 `toString`、`equals`、`hashCode`、`copy`: +`data class` 适合保存数据,会自动生成 `toString`、`equals`、`hashCode`、`copy` 函数: ```kotlin data class User(val id: Int, val name: String) @@ -313,9 +305,7 @@ val add: (Int, Int) -> Int = { a, b -> a + b } val square: (Int) -> Int = { it * it } ``` -如果 lambda 只有一个参数,可以用 `it` 指代。 - -当函数的最后一行是 lambda 变量时,可以在调用时简化 +当函数的最后一行是 lambda 变量时,可以在调用时简化: ```kotlin fun doOrNull( // 这是一种常见的分行写法 @@ -332,12 +322,14 @@ val a = doOrNull(b) { someClass -> someClass.c + 1 } // 在圆括号后直接写 lambda 定义,很方便 ``` -只有一个参数时也可以: +如果 lambda 只有一个参数,可以用 `it` 指代: ```kotlin val a = doOrNull(b) { it.c + 1 } ``` +可以用 `::funcName` 把一个函数用作 lambda 变量。 + ## 接下来可以看 [目录](../README.md) diff --git a/README.md b/README.md index 7dba6ad..906beec 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ ## 目录 -### 引入 Kotlin +### Kotlin 本体 1. [引入 Kotlin](Learning/引入Kotlin.md) 2. [深入 Kotlin](Learning/深入Kotlin.md) -3. [Kotlin Springboot](Learning/Kotlin-Springboot.md) -4. +3. [尝试 Kotlin Springboot](Learning/Kotlin-Springboot.md) +4. [成为 Kotlin 超人](Learning/成为Kotlin超人.md) ### Kotlin Multiplatform