在Lua中的for循环
我的作业是如何使用 for 循环。我已经搞清楚了数字方面,但是在名称方面搞不清楚。我想创建一个 for 循环,以遍历名称列表。以下是我目前的代码:
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
我尝试了其他一些方法,但它总是不起作用,终端只列出 1、2、3... 我做错了什么?
原文链接 https://stackoverflow.com/questions/7616260
你的问题很简单:
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
这段代码首先声明了一个名为 names
的全局变量。 然后,您开始一个 for 循环。 for 循环声明了一个 本地 变量,该变量名恰好也叫作 names
;先前用 names
定义过变量的事实完全无关紧要。在 for 循环中使用 names
的任何使用都将引用 本地 的变量,而不是全局的变量。
for 循环表示循环的内部部分将使用 names = 1
、然后是 names = 2
和最后 names = 3
来进行调用。for 循环声明了一个_计数器_,该计数器从第一个数字开始计数,到最后一个数字结束,并且它将为每个值调用内部代码一次。
您实际上想要的是这样的东西:
names = {'John', 'Joe', 'Steve'}
for nameCount = 1, 3 do
print (names[nameCount])
end
[] 语法是你如何访问 Lua 表的成员。Lua表将"键"映射到"值"。您的数组自动创建类型为整数的键,这些键增加。因此,在表中与 "Joe" 关联的键是2(Lua 索引始终从1开始)。
因此,您需要一个从 1 到 3 计数的 for 循环。您使用计数变量访问表中的元素。
然而,这有一个缺陷。如果您从列表中删除一个元素会发生什么?
names = {'John', 'Joe'}
for nameCount = 1, 3 do
print (names[nameCount])
end
现在,我们得到 John Joe nil
,因为尝试访问不存在的表值会导致 nil
。为了防止这种情况发生,我们需要从 1 到表的 长度 进行计数:
names = {'John', 'Joe'}
for nameCount = 1, #names do
print (names[nameCount])
end
#
是长度运算符。它适用于表和字符串,返回其中一个的长度。现在,无论 names
变得多大或多小,这将始终起作用。
但是,还有一种更方便的迭代数组中条目的方法:
names = {'John', 'Joe', 'Steve'}
for i, name in ipairs(names) do
print (name)
end
ipairs
是 Lua 的标准函数,用于迭代列表。这种 for
循环方式,迭代 for 循环,使用此类迭代器函数。i
值是数组条目的索引。name
值是该索引处的值。因此它基本上为您做了很多繁重的工作。
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
你正在删除你的表并替换它为一个整数 你没有从表中取出一个值
尝试:
names = {'John','Joe','Steve'}
for i = 1,3 do
print(names[i])
end
- 如何在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中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
通过在线阅读([表教程](http://lua-users.org/wiki/TablesTutorial)),似乎表的行为就像数组一样,因此您要寻找:
方法1
names = {'John', 'Joe', 'Steve'} for i = 1,3 do print( names[i] ) end
方法2
names = {'John', 'Joe', 'Steve'} for k,v in pairs(names) do print(v) end
方式1使用表
索引/键
,在您的表names
上,每个元素都有一个从1开始的键,例如:names = {'John', 'Joe', 'Steve'} print( names[1] ) -- prints John
因此,您只需使
i
从1到3。相反,对于方法2,您指定要运行的表并为其键和值分配变量,例如:
names = {'John', 'Joe', myKey="myValue" } for k,v in pairs(names) do print(k,v) end
打印以下内容: