Coding style 有没有一种更可读的方法来成对地写k,v(我的表)呢。。。如果我不使用k,就以lua结束?

Coding style 有没有一种更可读的方法来成对地写k,v(我的表)呢。。。如果我不使用k,就以lua结束?,coding-style,lua,Coding Style,Lua,lua中是否有更可读的方式来编写: for k, v in pairs(my_table) do myfunction( v ) end 我从不使用k,所以我想把它从循环控制中去掉,所以很明显我只是在迭代值。有没有像pairs()这样的函数只给我一个值列表?我见过人们使用\u变量而不是k或I。没有只迭代值的标准函数,但如果愿意,您可以自己编写。下面是这样一个迭代器: function values(t) local k, v return function() k,

lua中是否有更可读的方式来编写:

for k, v in pairs(my_table) do
    myfunction( v )
end 

我从不使用k,所以我想把它从循环控制中去掉,所以很明显我只是在迭代值。有没有像pairs()这样的函数只给我一个值列表?

我见过人们使用
\u
变量而不是k或I。

没有只迭代值的标准函数,但如果愿意,您可以自己编写。下面是这样一个迭代器:

function values(t)
  local k, v
  return function()
    k, v = next(t, k)
    return v
  end
end

但通常人们只使用
并丢弃第一个变量。在这种情况下,通常将未使用的变量命名为
(下划线),以清楚地表明其意图。

实际上,这是您的编码风格。如果你能读懂它,并且你与它保持一致,那么它就不重要了

然而,我倾向于使用:
用于i,c输入
“i”代表“索引”和“c”代表“孩子”,但“v”代表“价值”也起作用。即使不使用索引变量,这仍然是一个很好的实践

你可以做的另一件事是:
对于n=1,10

在处理数字时。但再一次,这是您的编码风格,只要它是一致的,您就应该是好的。

如果您不想要枚举表的键/值对,为什么要使用pairs()函数

例如,这比键入更短:

local t = {"asdf", "sdfg", "dfgh"}

for i=1, #t do
    print(t[i])
end
否则,我总是这样做:

local t = {"asdf", "sdfg", "dfgh"}

for _,v in pairs(t) do
    print(v)
end
编辑:在您的场景中,如果您希望仅枚举具有非数字键的表中的值,您可以做的最清楚的事情可能是编写自己的表迭代器函数,如下所示:

local t = {["asdf"] = 1, ["sdfg"] = 2, ["dfgh"] = 3}

function values(tbl)
    local key = nil
    return function()
            key = next(tbl, key)
            return tbl[key]
           end
end


for value in values(t) do
    print(value)
end
然后,非常明确的是,您只遍历表t的值。与pairs()类似,这也不能保证按顺序遍历,因为它使用next()。

来自:


因此,我希望下划线(
)(name)对于未使用的变量更具可读性。

我将表用作映射,因此键是非整数,因此#t总是返回0。
The variable consisting of only an underscore "_" is commonly used as a placeholder when you want to ignore the variable:

for _,v in ipairs(t) do print(v) end
Note: This resembles the use of "_" in Haskell, Erlang, Ocaml, and Prolog languages, where "_" takes the special meaning of anonymous (ignored) variables in pattern matches. In Lua, "_" is only a convention with no inherent special meaning though. Semantic editors that normally flag unused variables may avoid doing so for variables named "_" (e.g. LuaInspect is such a case).