脚本语言LUA里 表的问题,具体见描述

刚开始学习LUA,语法只是清楚个大概,学过C++,感觉LUA的表就像是STL里的MAP,看网上说的LUA里的表,可以通过两种方式来访问元素,一种是".",一种是"[]",... 刚开始学习LUA,语法只是清楚个大概,学过C++,感觉LUA的表就像是STL里的MAP,看网上说的LUA里的表,可以通过两种方式来访问元素,一种是" . ",一种是"[]",那么问题来了:
a= {}
a[1] = 0;
a.2 = 22;
a.x = "x";
a[3] = "333";
LUA的表在使用[]时,是否只能是在用于给某个元素赋值?

player = {
Name = "Pao",
Address = "Dragon vale of China",
skill = function(person)
print ("End of talk!Let's fight!")
end
}
local NewGame = {};
print(player["skill"])
NewGame[Skill] =
player["skill"];
NewGame.Skill()
上面这段代码,在运行到第二个player["skill"] 时提示table index is nil,这是什么意思?
第一个player["skill"]打印出来并不是nil啊,是正确的function: 0075CFA8。
求大神帮忙解答下!
展开
 我来答
yaoyue1019
推荐于2017-09-30 · 知道合伙人互联网行家
yaoyue1019
知道合伙人互联网行家
采纳数:804 获赞数:3392
擅长lua脚本 与android前端交互设计

向TA提问 私信TA
展开全部

其实要是仔细看书的话就会发现

所谓的"."不是特殊的语法,而是语法糖,所谓的语法糖 就是并非引入了新的概念,而只是一些缩写而已

例如

local t = {}
t.a = "aaa"
等价于
t["a"] = "aaa"

可以看出来 "."仍然表示访问这个表 但是是以点之后的内容的字符串为下标来访问

而且书上有提到过 点之后的内容 必须以英文字母或下划线开头,而不能以数字符号或汉字等其他字符开头

所以 用点访问 只是一种缩写的语法

至于有的时候甚至会看到使用冒号来访问 

t:fun()

这个其实也只是一个语法糖 并没什么新内容 具体的可以自行百度 我记得我在百度知道已经回答过很多次了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式