https://github.com/actix/exam...
没有在其他语言见过这两个东西
有什么文档可以提供参考的吗?
还有一个子问题: |
这个符号的中文名是什么?
https://github.com/actix/exam...
没有在其他语言见过这两个东西
有什么文档可以提供参考的吗?
还有一个子问题: |
这个符号的中文名是什么?
理解闭包, 可以复习一下高阶函数, 高阶函数的特点:
闭包: 也称为 匿名函数
, Lambda表达式
fn main() {
/////////////////
// 无参数闭包
/////////////////
let a = || 42;
// 它不是一个变量, 使用其值的时候需要加`()`作为函数调用
println!("a = {}", a());
/////////////////
// 单参数闭包
// - 带一个参数, 返回类型没有定义, 编译器依据返回值进行类型推导
// - 只有一个表达式, 可省略 {}
/////////////////
let b = |x| x + 1;
let d = |x| x + 1_i32;
println!("a = {}", b(1));
println!("a = {}", d(1));
// `||` 实际上等价于函数的(), 为不带参形式
// `->` 后是闭包的返回类型
// `{}` 为闭包体, 定义闭包(匿名函数)要执行的代码, 如果其中只有一条语句或表达式 {} 可以省略
/////////////////
// 多参数闭包
// - 有返回类型定义
// - 明确定义函数体
// - 因为定义了返回类型, 为了满足语法要求, 需要使用{}明确定义函数体
/////////////////
let c = |a: i32, b: i32| -> i32 { a + b };
println!("c = {}", c(1, 2));
}
7 回答5.3k 阅读
1 回答3.3k 阅读
2 回答832 阅读
1 回答876 阅读
闭包的语法
example:
https://doc.rust-lang.org/stable/book/ch13-01-closures.html
https://doc.rust-lang.org/stable/rust-by-example/index.html
看看那本书适合自己,也有对应中文版,结合这两本书进行快速学习