- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个迭代器,我想用一个很好的方法折叠它(比如 Iterator::sum
):
let it = ...;
let sum = it.sum::<u64>();
然后我注意到我还需要知道迭代器中元素的数量。我可以编写一个 for
循环并手动进行计数和求和,但这并不好,因为我必须更改一个可能很长的迭代器适配器链以及所有这些。此外,在我的真实代码中,我没有使用 sum
,而是使用了一种更复杂的“折叠方法”,我不想复制这种逻辑。
我想到了(滥用)使用 Iterator::inspect
:
let it = ...;
let mut count = 0;
let sum = it.inspect(|_| count += 1).sum::<u64>();
This works ,但是它是巧合还是保证这种行为? inspect
的文档提到为每个元素调用闭包,但也指出它主要用作调试工具。我不确定在生产代码中以这种方式使用它是否是个好主意。
最佳答案
我会说这是有保证的,但您永远不会发现它是这样明确说明的。正如你提到的,the documentation states :
Do something with each element of an iterator, passing the value on.
由于函数保证为每个元素运行闭包,并且语言保证运行闭包时会发生什么(根据闭包的定义),因此可以安全地依赖该行为。
话虽这么说,一旦您有一个或多个副作用,最好避开繁重的链接并转向无聊的 for
循环以提高可读性,但这将取决于具体情况.
关于rust - `Iterator::inspect` 中闭包的副作用是否定义明确,因此它可以用于例如数数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171609/
我有一个代码可以生成所有可能的正确平衡括号字符串。因此,如果输入是 n = 4,字符串中应该有 4 个括号,因此代码给出的答案是:{}{} 和{{}}。 现在,我想做的是打印可能的字符串的数量。例如,
我是一名编码初学者,想听听您对本练习的以下解决方案的建议: Write a program that loops prompting for positive or zero integers of
我有以下数字: 0,37,38,39,40,43,54,55,56,57,60,67,68,71,76,79,81,84,91,97,105,111,116,117,37,38,39,40,43,54
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
关于mysql中“group by”语句的简短问题: 我当前的数据库结构如下所示: CREATE TABLE TableName ( ID int primary key,
我是一名优秀的程序员,十分优秀!