修改引入,补充缺失细节

This commit is contained in:
SOR
2026-09-18 07:02:51 +08:00
parent 20f946382e
commit e68d4877c4
3 changed files with 12 additions and 30 deletions
+4 -14
View File
@@ -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)
+5 -13
View File
@@ -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)
+3 -3
View File
@@ -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