【问题标题】:variable _ in lua has a special meaning?lua中的变量_有什么特殊含义吗?
【发布时间】:2016-04-01 06:26:22
【问题描述】:

我是 lua / torch 的新手。我注意到变量 _ 被大量使用,尤其是在迭代器中。示例:

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

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

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

在众多可能的名称中,_有什么特殊含义还是只是一个变量名?

【问题讨论】:

  • 如果您声明一个变量但不使用它,或者在不使用以前的值的情况下为其分配一个新值,某些 IDE 会向您发出警告。尊重_ 作为一次性变量的传统用法,他们显然不会对_ 这样做,即使它只是一个普通变量。

标签: variables lua


【解决方案1】:

它通常用作一次性变量。它没有“真正的”特殊含义,但用于表示指示的值不重要。

仅由下划线“_”组成的变量通常用作占位符,当您想忽略该变量时...

阅读更多here(在命名部分下)。

【讨论】:

    【解决方案2】:

    _ 的使用通常用于从函数返回您不想要的值。这是有道理的,它看起来像一个空白。迭代时常用它的原因是因为大多数迭代器返回键值对,而您需要该值。

    但是,_ 也可以用于 exact 相反。当放在变量后面时,例如 _G_VERSION,表示它重要并且不应更改。

    最后是双下划线。我只将这些用于metamethods,例如__index__add,所以如果你正在创建一个函数或API 或任何检查自定义元方法的东西,请确保一致,并使用双下划线。

    所以说到底,这只是一个命名约定,完全是自以为是的和可选的。

    【讨论】:

    • 我比其他答案提供的信息更多,所以我发布了自己的答案。我希望它有所帮助。
    • 它确实是战争间谍!
    • 如果我遗漏了什么,请随时告诉我,我很乐意提供更多信息。
    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多