You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nim语言中实现反向迭代的主要方法有哪些?

Nim 反向迭代的正确实现方法

1. 使用标准库 reversed() 迭代器

这是最直观的实现方式,reversed() 会返回一个反向遍历原序列的迭代器,直接在 for 循环中使用即可:

const str = "Hello world!"
var str_2 = newStringOfCap(len(str))  # 预分配内存提升效率

for c in reversed(str):
  str_2.add(c)

echo str_2  # 输出: !dlrow olleH

也可以结合 collect 宏一步生成反向字符串,写法更简洁:

const str = "Hello world!"
let str_2 = collect(newString):
  for c in reversed(str): add c

echo str_2

2. 带步长的切片语法

你之前尝试的 [^1..0] 报错,是因为 Nim 切片默认步长为 1(递增方向),从高索引到低索引需要显式指定步长为 -1,这和 Python 的 var[::-1] 逻辑一致:

const str = "Hello world!"
let str_2 = str[^1 .. 0 step -1]  # 直接生成反向字符串

echo str_2

3. 使用 countdown() 遍历索引

如果需要操作元素索引,可以用 countdown() 从序列的最大索引(high 属性)遍历到 0,无需手动维护索引变量:

const str = "Hello world!"
var str_2 = newStringOfCap(len(str))

for i in countdown(str.high, 0):
  str_2.add(str[i])

echo str_2

这里 str.high 等价于 len(str)-1,是序列最后一个元素的索引,用它比手动计算更安全。


内容的提问来源于stack exchange,提问作者Lucius_Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:24:55