数组 – 尽可能采取`Iterator`而不是`Vec`?
发布时间:2020-12-14 17:48:52 所属栏目:Java 来源:网络整理
导读:当函数以一系列值作为参数时,是否认为接受迭代器T的良好风格.而不是Vec T 这样,呼叫者可以自己决定如何存储该系列(在Vec,[T; N]或其他任何内容中),实际上应该是可选的 T).此外,这样就无需将您所拥有的任何内容转换成Vec,而且在应用了一些Iterator修饰符之后,
当函数以一系列值作为参数时,是否认为接受迭代器T的良好风格.而不是Vec T
这样,呼叫者可以自己决定如何存储该系列(在Vec,[T; N]或其他任何内容中),实际上应该是可选的< T>).此外,这样就无需将您所拥有的任何内容转换成Vec,而且在应用了一些Iterator修饰符之后,不需要.collect().所以也应该更快! 我错过了什么,还是这样做呢? 解决方法
你所描述的这样的功能通常应该是一个
IntoIterator<Item = T> ;因此它可以接受迭代器< T>和Vec T作为输入.
这也可以与其他技术结合使用;例如,该方法concat将接受& str(通过auto deref / ref强制)& [String](以及& Vec< String)& [& str](以及& Vec&,& str迭代器,String迭代器等: use std::borrow::Borrow; fn concat<T: Borrow<str>,Iter: IntoIterator<Item = T>>(iter: Iter) -> String { iter.into_iter() // -> impl Iterator<Item = T> .map(|s| s.borrow()) // -> impl Iterator<Item = &str> .collect() // -> String } (这个具体的例子实际上通常会更适合于 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 百度Java面试题 前200页精选(中)
- 23种设计模式(12)java模版方法模式
- 如何使用Java Math Commons CurveFitter?
- 详解SpringMVC使用MultipartFile实现文件的上传
- java – JLabel中的SetLocation
- 详解SpringBoot Schedule配置
- 为什么这个Java代码没有用#跳过?
- Springboot整合thymleaf模板引擎过程解析
- java – 如何修复com.mysql.jdbc.exceptions.jdbc4.MySQLNo
- jsf-2 – java.lang.ClassCastException:java.util.ArrayL