如果我不使用k,在Lua中是否有更易读的方法来编写for k,v in pairs(my_table)do ... end?
2012-9-12 19:20:36
收藏:0
阅读:157
评论:5
有没有一种在 Lua 中更易读的方式来编写以下代码:
for k, v in pairs(my_table) do
myfunction( v )
end
我从未使用过 k,所以我想将其从循环控制中删除,以便清楚地表明我只是在迭代值。是否有像 pairs() 这样只提供值列表的函数?
点赞
用户1008957
没有标准函数专门迭代值,但是如果你希望的话,你可以自己编写。这是一个这样的迭代器:
function values(t)
local k, v
return function()
k, v = next(t, k)
return v
end
end
但通常人们只使用pairs并丢弃第一个变量。在这种情况下,习惯上将未使用的变量命名为_(下划线)以明确表明意图。
2012-09-12 21:03:48
用户1542101
这真的取决于你的编程风格。如果你能理解它并且保持一致,那就无关紧要。
然而,我倾向于使用:
for i,c in
“i”代表“index”,“c”代表“child”,但“v”代表“value”也可以。即使你不使用索引变量,这仍然是一个好的习惯。
另一件你可能会做的事情是:
for n = 1, 10
当处理数字时。但再次强调,这是你的编程风格,只要保持一致,你就可以做得很好。
2012-09-12 23:43:28
用户1208078
如果你不想要枚举表中的键/值对,那么为什么要使用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()。
2012-09-13 01:57:00
用户72178
从Lua风格指南:
当您想忽略变量时,只由下划线“_”组成的变量通常用作占位符:
for _,v in ipairs(t) do print(v) end
注意:这类似于Haskell,Erlang,Ocaml和Prolog语言中使用下划线“_”的用法,其中“_”在模式匹配中表示匿名(被忽略的)变量。在Lua中,“_”只是一种惯例,没有固有的特殊含义。通常标记为未使用变量的语义编辑器可能会避免对命名为“_”的变量进行标记(例如,LuaInspect就是这种情况)。
因此,我希望对于未使用的变量使用下划线(_)名称会更具可读性。
2013-02-19 09:52:16
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我看到过有人使用
_变量来代替k或者i。