Lua/Torch 中的枚举函数

在 Python 中,我们使用 for i, _ in enumerate(wx): 来枚举一个行矩阵或表格 wx。在 Lua/Torch 中,是否有类似的枚举函数呢?

点赞
用户1190388
用户1190388

在 Lua 中,你可以使用 pairsipairs

pairs (t)

如果 t 拥有元方法 __pairs,则调用它并返回调用结果的前三个值。

否则,返回三个值:next 函数、表 t nil。这样,构造

for k,v in pairs(t) do body end

就会遍历表 t 中的所有键值对。

你也可以使用 next 来创建自己的自定义枚举:

next (table [, index])

允许程序遍历表的所有字段。它的第一个参数是一个表,第二个参数是表中的一个索引。next 返回表的下一个索引及其关联值。当用 nil 作为它的第二个参数调用时,next 返回一个初始索引及其关联值。当用最后一个索引或在空表中用 nil 调用 next 时,next 返回 nil。如果第二个参数缺失,则被解释为 nil。你可以使用 next(t) 来检查表是否为空。

枚举索引的顺序没有指定,即使是数字索引也是如此。 (要按数字顺序遍历表,使用数字 for。)

如果在遍历期间为表中不存在的字段赋值,则 next 的行为是未定义的。但是您可以修改现有字段。特别是,您可以清除现有字段。

2016-06-03 05:47:38