From 0468f6d8718f7bf5a096eedd077ff27a6ec701d5 Mon Sep 17 00:00:00 2001 From: Allan Downey Date: Thu, 9 Jun 2022 21:19:00 +0800 Subject: [PATCH] update(index-list): add closure --- src/index-list.md | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/index-list.md b/src/index-list.md index d5764ad9..6a855205 100644 --- a/src/index-list.md +++ b/src/index-list.md @@ -99,16 +99,17 @@ ## C -| 名称 | 关键字 | 简介 | -| ------------------ | -------- | ----------------------------------------------------------------------------------- | -| [char 字符] | 字符类型 | 使用 `''` 表示,所有的 Unicode 值 | -| [const 常量] | constant | `const MAX_POINTS: u32 = 100_000;` | -| [const 泛型] | 泛型 | `const N: usize` 针对值的泛型,适合处理数组长度的问题 | -| [const 泛型表达式] | 泛型 | | -| [Copy 拷贝] | 浅拷贝 | 任何基本类型的组合可以 `Copy`,不需要分配内存或某种形式资源的类型是可以 `Copy` 的。 | -| [continue] | 循环控制 | 跳过当前当次的循环,开始下次的循环 | -| [Clone 克隆] | 深拷贝 | 需要复制堆上的数据时,可以使用 `.clone()` 方法 | -| | KWC | | +| 名称 | 关键字 | 简介 | +| ------------------ | -------- | ---------------------------------------------------------------------------------------------------------------- | +| [char 字符] | 字符类型 | 使用 `''` 表示,所有的 Unicode 值 | +| [const 常量] | constant | `const MAX_POINTS: u32 = 100_000;` | +| [const 泛型] | 泛型 | `const N: usize` 针对值的泛型,适合处理数组长度的问题 | +| [const 泛型表达式] | 泛型 | | +| [Copy 拷贝] | 浅拷贝 | 任何基本类型的组合可以 `Copy`,不需要分配内存或某种形式资源的类型是可以 `Copy` 的。 | +| [continue] | 循环控制 | 跳过当前当次的循环,开始下次的循环 | +| [Clone 克隆] | 深拷贝 | 需要复制堆上的数据时,可以使用 `.clone()` 方法 | +| [Closure] | 闭包 | 闭包是一种匿名函数,它可以赋值给变量也可以作为参数传递给其它函数,不同于函数的是,它允许[捕获调用者作用域中的值] | +| | KWC | | [char 字符]: https://course.rs/basic/base-type/char-bool.html#字符类型char [const 常量]: https://course.rs/basic/variable.html#变量和常量之间的差异 @@ -117,6 +118,8 @@ [continue]: https://course.rs/basic/flow-control.html#continue [const 泛型]: https://course.rs/basic/trait/generic.html#const-泛型rust-151-版本引入的重要特性 [const 泛型表达式]: https://course.rs/basic/trait/generic.html#const-泛型表达式 +[closure]: https://course.rs/advance/functional-programing/closure.html +[捕获调用者作用域中的值]: https://course.rs/advance/functional-programing/closure.html#捕获作用域中的值 [back](#head) @@ -155,6 +158,8 @@ | [for 循环] | 循环控制 | `for item in &collection {}` | | ['fn' 函数] | | 函数名和变量名使用 `蛇形命名法(snake case)`
函数的位置可以随便放
每个函数参数都需要标注类型 | | [调用同名的方法] | | 1. 默认调用类型上的方法
`Struct.function(receiver_if_method, next_arg, ...);`
2. 显式调用特征上的方法
`Trait::function(receiver_if_method, next_arg, ...);`
3. [完全限定语法]
`::function(receiver_if_method, next_arg, ...);` | +| [三种 Fn 特征] | 闭包 | 闭包[捕获变量]有三种途径,恰好对应函数参数的三种传入方式:转移所有权、可变借用、不可变借用 | +| [三种 Fn 的关系] | 闭包 | | | | KWF | | [浮点数]: https://course.rs/basic/base-type/numbers.html#浮点类型 @@ -162,6 +167,9 @@ ['fn' 函数]: https://course.rs/basic/base-type/function.html [调用同名的方法]: https://course.rs/basic/trait/advance-trait.html#调用同名的方法 [完全限定语法]: https://course.rs/basic/trait/advance-trait.html#完全限定语法 +[三种 fn 特征]: https://course.rs/advance/functional-programing/closure.html#三种-fn-特征 +[捕获变量]: https://course.rs/advance/functional-programing/closure.html#捕获作用域中的值 +[三种 fn 的关系]: https://course.rs/advance/functional-programing/closure.html#三种-fn-的关系 [back](#head)