如何检查for循环是否在迭代器的最后一个元素上?

酷数学游戏

我试图找到一种方法来检查我是否在 for 循环中的迭代器的最后一个元素上而不使用 .clone(); 目前我正在这样做:

let sentence = "The quick brown fox.";
let words = sentence.split(' ');
let last = words.clone().last().unwrap();
 
for word in words {
    if word == last {
        print!("{}", word);
    }
} 

我也试过在迭代器上使用 .collect() ,但这要求我使用 .iter().enumerate() 来检查最后一个索引,这对我来说似乎不必要地复杂:

let sentence = "The quick brown fox.";
let words: Vec<&str> = sentence.split(' ').collect();
 
for (i, word) in words.iter().enumerate() {
    if i == words.len() - 1 {
        print!("{}", word);
    }
}

有没有办法以更简洁的方式做到这一点,也许只是使用原始迭代器?

马斯林

将您的迭代器转换为Peekable.

这将需要将迭代脱糖为 a while let,但如果在迭代期间peek()返回,则None您处于最后一次迭代:

let mut it = sentence.split(' ').peekable();
while let Some(word) = it.next()  {
    if it.peek().is_none() {
        println!("{}", word);
    }
}

游乐场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用foreach语法进行迭代时,如何检查我是否在最后一个元素上

如何检查 item 是否是循环中满足特定条件的最后一个元素

如何获得从最后一个元素开始的迭代器

如何检查是否是最后一个元素

std::iterator 可以检查下一个元素是否存在于该迭代器上吗?

For循环仅迭代Python中的最后一个元素

For 循环只迭代列表中的最后一个元素

检测迭代器是否为std :: map的最后一个元素

排除最后一个元素的迭代器

向量的最后一个元素的迭代器

Vue-检查您是否在v-for循环的最后一个道具上

单行检查迭代器是否产生至少一个元素?

检查当前循环迭代是否大于前一个

如何检测地图迭代器中的最后一个元素

如何获得_.forEach()循环中的最后一个迭代

检查是否单击了最后一个元素

如何只迭代列表的最后一个元素?

我如何处理迭代的最后一个元素

如何检查class的div是否为最后一个元素

如何检查for循环中的下一个迭代?

如何检查活动是否是 API 21+ 上活动堆栈中的最后一个

如何使用触发器检查DataGridColumnHeader的ColumnIndex是否最后一个?

迭代器:将最后一个元素与另一个值配对

如何检查迭代的内容是否是字典中的最后一个键/值?(可能需要在Django模板中完成)

如何使用for循环返回列表的最后一个元素

如何检查标签是否为最后一个

zip迭代器缺少最后一个元素如何将线连接在一起

如何在没有JQuery的情况下检查元素是否为最后一个子元素

使用迭代器中除最后一个元素之外的所有元素