在lua中,变量“_”具有特殊含义吗?

我是lua / torch的新手。我注意到在迭代器中经常使用变量 _ 。例如:

for _, node in ipairs(protos.rnn.forwardnodes) do
    a,b = whatever(a,b)
end

这种“变量命名约定”(可以这么说)在其他情况下也会使用,例如:

local _,loss = optimizer(feval,params,optim_state)

_ 有什么特殊含义还是只是更多可能的变量名之一?

点赞
用户2238176
用户2238176

通常将其用作可抛弃变量。它没有“真正”的特殊含义,但用于表示所指示的值不重要。

变量只包含下划线“_”通常用作占位符,当您想忽略变量时使用 ...

更多信息在此处(在“命名”部分下)。

2015-12-26 22:56:32
用户3979429
用户3979429

使用下划线通常是为了返回不需要的函数值。这是有道理的,因为它看起来像一张_blank_。之所以在迭代时常用是因为大多数迭代器返回键值对,而你_只需要_值。

然而,下划线也可以用于_完全相反的方式。当放置在变量后面,例如_G或_VERSION,它表示这是重要的,应该 不要 改变。

最后是双下划线。我只用过这些元方法,例如__index__add,所以如果你正在制作检查自定义元方法的函数或API或者其他一些东西,确保保持一致,并使用双下划线。

因此,最终它只是一种命名约定,完全是主观和可选的。

2015-12-27 00:22:05