如何使用Lua表
2011-11-15 0:52:33
收藏:0
阅读:88
评论:3
我正在从《Lua 程序设计》(第二版)开始学习 Lua,但书中以下内容我不太理解,讲解得非常模糊:
a.) w={x=0,y=0,label="console"}
b.) x={math.sin(0),math.sin(1),math.sin(2)}
c.) w[1]="another field"
d.) x.f=w
e.) print (w["x"])
f.) print (w[1])
g.) print x.f[1]
当我完成 a.) 后执行 print(w[1])
,为什么它不打印出 x=0
?
c.) 的作用是什么?
e.) 和 print (w.x)
有什么区别?
b.) 和 g.) 的作用是什么?
原文链接 https://stackoverflow.com/questions/8129727
点赞
stackoverflow用户4074771
local w = {
--[1] = "another field"; -- 将设置这个值
--["1"] = nil; -- 不保存到这个位置, 不同于其他某些语言
x = 0;
y = 0;
label = "console";
}
local x = {
math.sin(0);
math.sin(1);
math.sin(2);
}
w[1] = "another field" --
x.f = w
print (w["x"])
-- 因为 x.f = w
-- x.f 和 w 指向同一个表地址
-- 所以 (x.f)[1]、w[1] 和 x.f[1] 的值相等
print (w[1])
print ((x.f)[1])
print (x.f[1])
-- print (x.f)[1] 不符合 Lua 语法
-- 只有一个参数并且类型是字符串的函数可以这样使用 print "xxxx"
-- 所以打印 x.f[1] 会导致错误
-- 在表中, 你可以使用任何 Lua 内部类型的值作为键
-- 就像这样
local t_key = {v=123}
local f_key = function () print("f123") end
local t = {}
t[t_key] = 1
t[f_key] = 2
-- 然后 t 的键就像使用 t_key/f_key 的句柄一样
-- 当你使用 t[{}] = 123 这样的语句时,
-- 值 123 相关联的是这个没有名字的表 {} 的句柄
2014-09-24 13:29:34
stackoverflow用户4632769
在行内表格声明中创建密钥的另一种方法如下:
x = {["1st key has spaces!"] = 1}
这种方法的优点是您可以使用具有空格和任何扩展 ASCII 字符的密钥。实际上,密钥可以是任何东西,甚至是实例化对象。
function Example()
--例子函数
end
x = {[Example] = "A function."}
任何变量、值或数据都可以放入方括号中,作为键使用。同样的道理也适用于值。
实际上,这可以替代 python 中的 in
关键字的功能,因为您可以按值对表进行索引,以检查它们是否存在。
在未定义的表格部分获取值不会导致错误。它只会给您 nil。同样的道理也适用于使用未定义的变量。
2015-03-04 16:01:11
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 模式将字符串(嵌套数组)转换为真正的数组?
你必须意识到:
t = {3, 4, "eggplant"}
与此相同:
t = {} t [1] = 3 t [2] = 4 t [3] = "eggplant"
以及这个:
t = {x = 0, y = 2}
与此相同:
t = {} t ["x"] = 0 t ["y"] = 2
或者这个:
在 Lua 中,表不仅仅是列表,它们是 关联数组。
当你打印
w [1]
时,真正重要的是行 c.)。实际上,直到行 c.),w [1]
才没有定义。e.) 和
print (w.x)
没有区别。b.) 创建一个名为
x
的新表,该表与w
不同。d.) 将对
w
的引用 _放置在x
中_。 (注意:实际上它没有复制w
,只是一个 引用。如果你曾经使用过指针,它类似。)g.) 可以分成两部分。首先,我们得到
x.f
,这只是另一种引用w
的方式,因为它在行 d.) 中。然后,我们查找该表的第一个元素,即"another field"
,因为它在行 c.) 中。