【问题标题】:Is it possible to iterate over a tuple?是否可以遍历元组?
【发布时间】:2019-08-24 19:00:22
【问题描述】:

我想使用循环遍历一个元组,就像在 Python 中一样。 Rust 有可能吗?

let tup1 = (1, '2', 3.0);
for i in tup1.iter() {
    println!("{}", i);
}          

【问题讨论】:

  • “[L]ike in python 和任何其他编程语言”——我认为没有一种静态类型的编程语言可以让您迭代异构元组类型。 Python 是动态类型的。

标签: rust tuples iteration


【解决方案1】:

元组的每个元素的类型可以不同,因此您不能对它们进行迭代。元组甚至不能保证以与类型定义相同的顺序存储它们的数据,因此即使您自己为它们实现Iterator,它们也不是高效迭代的好选择。

但是,数组完全等价于元组,所有元素的类型相同:

let tup = [1, 2, 3];
for i in tup.iter() {
    println!("{}", i);
}

另见:

【讨论】:

    【解决方案2】:

    您可以将元组组合成一个数组。

    const brackets: &[(&str, &str)] = &[("(", ")"), ("[", "]"), ("{", "}")];
    
    for b in brackets.iter() {
       for c in [b.0, b.1].iter() {
          println!("{}", c);
       }
    }
    

    所以从技术上讲,一种方法是:

    for element in [tuple.0, tuple.1, ...].iter() { ... }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2021-04-09
      • 2018-02-13
      • 2018-05-27
      • 2011-06-14
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多