Rust修仙之道 第八章:意动境 · 闭包与迭代的灵动之道
第八章:意动境 · 闭包与迭代的灵动之道
“他人需咏符念咒,我一念而动术;他人遍历千灵,我引灵自来去。”
顾行云望着铺天盖地的灵纹数据,若要逐一施术,岂非精神耗尽?他开始思索:是否能唤出意动即术的技法,让函数式灵气随心而施?
此境,被称为:闭包(closure)与迭代(iterator)之术。
一、闭包术法 · 心念即召咒
闭包是可以捕获环境灵气的“微型法印”:
let double = |x| x * 2;
println!("双倍灵力:{}", double(6)); // 输出 12
闭包可有类型,也可由灵器自动推断:
let sum = |a: i32, b: i32| -> i32 { a + b };
他发现闭包可捕获周围灵气变量,实现“无声咒”:
let mut boost = 3;
let enhance = |val: i32| val + boost;
boost = 5; // 若闭包未立即调用,则变动影响术式行为
修炼提示:
若闭包只借用外部灵气 →
&T
;若需要修改外部灵气 →
&mut T
;若夺取所有权 →
T
(move
关键字)
二、迭代灵术 · 万象遍历心识
顾行云学会用 .iter()
唤出“灵迹之流”:
let relics = vec!["火符", "冰珠", "雷骨"];
for item in relics.iter() {
println!("发现灵物:{}", item);
}
若要加工每个灵物,他使用链式灵术:
let results: Vec<_> = relics
.iter()
.map(|r| format!("{}・鉴定完毕", r))
.collect();
常用迭代技:
灵术名 | 含义 |
---|---|
.map() |
变换术,灵转其形 |
.filter() |
过滤术,留下精华 |
.find() |
探测术,找出首个满足条件之灵 |
.fold() |
折叠术,从多个灵点汇聚为一 |
.any() / .all() |
判定术,部分/全部满足某条件 |
示例:
let values = vec![10, 20, 30];
let total = values.iter().fold(0, |acc, x| acc + x); // 60
三、闭环炼灵:自定义迭代器
更高阶的术士还可自制迭代灵阵:
struct Counter {
count: u32,
}
impl Iterator for Counter {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
self.count += 1;
if self.count < 6 {
Some(self.count)
} else {
None
}
}
}
顾行云试炼自制迭代灵脉,掌控步数与终止契机,堪比“灵律编舞”术。
术式心诀 · 意动之理
咒可省,灵自随;序可化,念自回;动静循环间,术由心生。
Rust修仙之道 第八章:意动境 · 闭包与迭代的灵动之道的更多相关文章
- keras 修仙笔记一
对于牛逼的程序员,人家都喜欢叫他大神:因为大神很牛逼,人家需要一个小时完成的技术问题,他就20分钟就搞定.Keras框架是一个高度集成的框架,学好它,就犹如掌握一个法宝,可以呼风唤雨.所以学keras ...
- oo修仙之路
写在前面: 之前听说过oo这门课的威力,计院全体修仙现场的图也被转了不知多少遍,然而自己不亲身经历就不知这门课的难度所在.每次debug时耳边总会想起三国杀里面周瑜的话"挣扎吧,在血和暗的深 ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
- LazyCoder修仙之路
本人不才,没有高文凭,茹果本人的修仙[开发]之路能 ,走的很远,后来的人能看的上我 作品,有不足,和不对,帮帮我完善和理解.这也是我 学习笔记把!
- 运维(SA)修仙 之路
运维(SA)修仙 之路: 大纲: 系统 ,网络 ,数据库,开发 系统 :linux(cent OS && ubuntu) 网络 :路由,防火墙,安全 数据库:mysql, mong ...
- 《带你装B,带你飞》pytest修仙之路3 - setup/teardown
1. 简介 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次.当然还有更高级一点的setupClass和teardownClass ...
- 《带你装B,带你飞》pytest修仙之路5 - yield操作
1. 简介 上一篇中,我们刚刚实现了在每个用例之前执行初始化操作,那么用例执行完之后如需要清除数据(或还原)操作,可以使用 yield 来实现.fixture通过scope参数控制setup级别,既然 ...
- 从零搭建Golang开发环境--go修仙序章
1. 什么是go语言 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态 .强类型.编译型语言 .Go 语 ...
- 走进shiro,构建安全的应用程序---shiro修仙序章
0. 写在前面 在最近的一个项目当中,我们基于Shiro实现我们系统的认证和授权.借此机会,写几篇博客,总结一下在本次实践当中遇到的问题,和较全面地学习一下Shiro的知识点, 1. 权限管理 权限管 ...
- 百度实习生,以修仙者的角度聊聊怎么学MySQL,不来看看你的修为如何吗?
目录 因为我个人比较喜欢看修仙类的小说,所以本文的主体部分借用修仙者的修为等级,将学习旅程划分成:练气.筑基.结丹.元婴.化神.飞升六个段位,你可以看下你大概在哪个段位上哦! 本文目录: 我为什么要写 ...
随机推荐
- expected at least 1 bean which qualifies as autowire candidate
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'log ...
- Windows7、Windows10跳过创建用户并直接用Administrator身份登录
windows7 windows10跳过创建用户并直接用Administrator身份登录 一.操作方法: 在界面设置按 按 shift+f10 然后输入 lusrmgr.msc 用户管理控制台开启a ...
- Goland搭建Go开发环境
1.下载和安装Golang 下载链接: 谷歌链接:https://golang.google.cn/dl/ 国内链接:https://studygolang.com/dl 安装示意图: 安装完成后配置 ...
- python之random函数,随机取值
如 a =['辣椒炒肉','红烧肉','剁椒鱼头','酸辣土豆丝','芹菜香干'] 需要从a数组中随机取出一个值打印出来 具体脚本 import random a =['辣椒炒肉','红烧肉','剁椒 ...
- [亲测]ThinkPHP中where方法中变量不解析的解决方法
2018年5月4日 01:15 血的教训,今天做一个项目,需要批量更新数据,所以where中必须用变量.发现where里的变量不解析并且会直接报错,然后通过搜索发现可以在双引号中的左右加号中包裹变量 ...
- CF1740C题解
众所周知,这道题的难度是 1400,所以是简单题. 分析 首先,坚信这是一道简单题,所以不要想复杂了. 首先我们需要对 aaa 数组排序,这点是肯定的,为啥应该不用我解释. 下面,我们假设 p1, ...
- 通过Linux包管理器提升权限
免责声明:本文所涉及的技术仅供学习和参考,严禁使用本文内容从事违法行为和未授权行为,如因个人原因造成不良后果,均由使用者本人负责,作者及本博客不承担任何责任. 前言 在Linux系统中,apt和yum ...
- 【经验】Ubuntu20.04虚拟机的网络问题|在NAT模式没有网络连接图标,桥接模式正常
我的版本:Ubuntu20.04.04,iso是清华镜像站的release版本. 问题:NAT模式没有网络连接图标,或者图标闪一下就消失不见,并且无法获取IP地址:但是桥接模式的网络服务却是正常的. ...
- 获取接口方式(Bean注入方式总结)
一.在工具类中使用SpringContextHolder获取Bean对象,用来调用各个接口 /** * 获取阿里巴巴属性列表映射 * * @author 王子威 * @param alibabaPro ...
- MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎
本文分享自华为云社区<MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎>,作者:华为云社区精选 从 AI 技术的"火热概念"到"实际业务的落地&quo ...