【问题标题】:How to iterate over a tuple in Nim?如何迭代 Nim 中的元组?
【发布时间】:2018-02-13 08:44:37
【问题描述】:

假设我有一个程序getTuple(): (int, int, int)。如何迭代返回的元组?看起来items 不是为tuple 定义的,所以我不能这样做for i in getTuple()

我最初有这个返回一个sequence,这被证明是一个瓶颈。我可以在不影响性能的情况下让它工作吗?我想作为最后的手段,我可​​以展开我的循环,但有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: nim-lang


    【解决方案1】:

    好的,我想通了。您可以遍历元组的字段:

    let t = (2,4,6)
    
    for x in t.fields:
      echo(x)
    

    【讨论】:

      【解决方案2】:

      我最初有这个返回一个序列,这被证明是一个瓶颈。我可以在不影响性能的情况下让它工作吗?

      改用array[N, int],它没有间接性。为什么 seq 的性能不够好?您可能希望最初使用 newSeq[int](size) 将其分配到正确的大小。

      【讨论】:

      • 我的序列分配正确,但分析显示调用newSeq 花费了大量时间。这是一些性能关键的模拟代码的最内层循环。我刚刚测试了array[N, int],它非常出色 - 谢谢!
      • 当然在内部循环中你不会想要分配seqs。除了复制结果数组,您还可以传入一个指针并直接写入正确的位置。
      猜你喜欢
      • 2015-06-08
      • 1970-01-01
      • 2015-06-17
      • 2017-12-10
      • 2013-11-21
      • 2018-07-03
      • 1970-01-01
      • 2011-04-06
      • 2015-05-22
      相关资源
      最近更新 更多