修改引入,补充缺失细节
This commit is contained in:
+4
-14
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user