Rust修仙之道 第八章:意动境 · 闭包与迭代的灵动之道

第八章:意动境 · 闭包与迭代的灵动之道

“他人需咏符念咒,我一念而动术;他人遍历千灵,我引灵自来去。”

顾行云望着铺天盖地的灵纹数据,若要逐一施术,岂非精神耗尽?他开始思索:是否能唤出意动即术的技法,让函数式灵气随心而施?

此境,被称为:闭包(closure)与迭代(iterator)之术

一、闭包术法 · 心念即召咒

闭包是可以捕获环境灵气的“微型法印”:

/* by 01022.hk - online tools website : 01022.hk/zh/jsonlrview.html */
let double = |x| x * 2;
println!("双倍灵力:{}", double(6)); // 输出 12

闭包可有类型,也可由灵器自动推断:

/* by 01022.hk - online tools website : 01022.hk/zh/jsonlrview.html */
let sum = |a: i32, b: i32| -> i32 { a + b };

他发现闭包可捕获周围灵气变量,实现“无声咒”:

let mut boost = 3;
let enhance = |val: i32| val + boost;
boost = 5; // 若闭包未立即调用,则变动影响术式行为

修炼提示:

  • 若闭包只借用外部灵气 → &T

  • 若需要修改外部灵气 → &mut T

  • 若夺取所有权 → Tmove 关键字)

二、迭代灵术 · 万象遍历心识

顾行云学会用 .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
        }
    }
}

顾行云试炼自制迭代灵脉,掌控步数与终止契机,堪比“灵律编舞”术。

🧘 术式心诀 · 意动之理

咒可省,灵自随;序可化,念自回;动静循环间,术由心生。
⬅️ 上一章            [下一章 待续➡️]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值