heart 板


LINE

## 关於 Rust 迭代器链式调用和 collect 的问题 ### 1. 链式调用 * 是的,你理解的没错。所谓链式调用,就是以 "." 为连结,有顺序意味的操作。 * 例如 `v.iter().enumerate().collect::<Vec<_>>();` 这个例子,它的执行顺序是: 1. `v.iter()`: 将 `v` 转换为迭代器。 2. `.enumerate()`: 将迭代器中的每个元素和索引组合成元组,产生一个新的迭代器 。 3. `.collect::<Vec<_>>();`: 将新的迭代器中的元素收集到一个 `Vec` 中。 * 这种链式调用并非 Java 类型实例的方法用法,而是 Rust 中迭代器配接器的特性。它允 许我们像流水线一样,对迭代器进行连续的转换和操作,使程式码更简洁、易读。 ### 2. `collect::<Vec<_>>()` * `collect` 函数的作用是将迭代器中的元素收集到一个集合中。 * `::<Vec<_>>()` 是类型标注,它告诉编译器我们要收集到哪种类型的集合中。 * `Vec`: 表示我们要收集到一个动态阵列 (Vector) 中。 * `<_>`: 表示 Vec 中元素的类型由编译器自动推导。 * 这种用法与 C 语言的泛型有点类似,但也有不同之处。 * 相同之处:它们都允许我们在编写程式码时,暂时不指定具体的类型,而是让编译器 在编译时根据上下文进行推导。 * 不同之处: * C 语言的泛型主要用於函数和资料结构的参数和返回值类型。 * Rust 的泛型除了用於函数和资料结构外,还可以用於 trait、impl 等。 * Rust 的泛型系统更加强大,它支持 trait bounds、where clauses 等,可以对 泛型类型进行更精确的约束。 ### 总结 * 链式调用是 Rust 迭代器配接器的一个重要特性,它允许我们以 functional 的方式,对 迭代器进行连续的转换和操作。 * `collect` 函数用於将迭代器中的元素收集到一个集合中,`::<Vec<_>>()` 是类型标注 ,用於指定集合的类型。 * Rust 的泛型系统比 C 语言的泛型系统更加强大,它提供了更多的灵活性和安全性。 希望以上说明对你有帮助! 在 Java 和 C# 中,函数式编程和链式调用越来越常见。要区分链式调用和类型实例後的方 法,可以从以下几个方面观察: ## 1. 返回值类型 * **链式调用**: 链式调用的方法通常会返回**当前物件的实例**(`this`),这样才能继 续调用下一个方法。 * **类型实例方法**: 类型实例方法则不一定返回当前物件,它们可能返回任何类型的值, 或者 void。 ## 2. 方法命名 * **链式调用**: 链式调用的方法命名通常具有一定的含义,例如 `setXXX`、`withXXX`、 `addXXX` 等,表示对物件的属性或状态进行修改。 * **类型实例方法**: 类型实例方法的命名则更加多样化,它们可以表示任何操作,例如 ` getXXX`、`calculateXXX`、`processXXX` 等。 ## 3. 调用方式 * **链式调用**: 链式调用使用 "." 连续调用多个方法,形成一个链条。 * **类型实例方法**: 类型实例方法则单独调用,每个方法调用之间没有明显的联系。 ## 示例 ### Java ```java // 链式调用 StringBuilder sb = new StringBuilder(); sb.append("hello").append(" ").append("world").append("!"); // 类型实例方法 String str = sb.toString(); int len = str.length(); ``` ### C# ```csharp // 链式调用 List<int> list = new List<int>(); list.Add(1).Add(2).Add(3); // 类型实例方法 int count = list.Count; list.Remove(2); ``` ## 总结 * 链式调用和类型实例方法都是物件导向编程中常见的技术,它们可以提高程式码的可读性 和效率。 * 链式调用通常用於对物件的属性或状态进行连续修改,而类型实例方法则可以表示任何操 作。 * 通过观察返回值类型、方法命名和调用方式,可以有效地判断是否属於链式调用。 希望以上说明能够帮助你更好地理解 Java 和 C# 中的链式调用和类型实例方法。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.82.61.100 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/heart/M.1740013248.A.B49.html







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP