lua中table能否直接赋值

比如直接进行全局的赋值asd[1]="123asd";(省略了asd={};)然后在同文件中另外个函数能否直接调用?如果我加上了声明语句asd={}然后进行赋值asd[1... 比如直接进行全局的赋值
asd[1]="123asd";(省略了asd={};)

然后在同文件中另外个函数能否直接调用?
如果我加上了声明语句asd={}
然后进行赋值asd[1]="123asd"
之后声明语句asd={}被再次调用
那么还能获得asd[1]的值么?
展开
 我来答
斯人已噬
2012-03-07 · TA获得超过219个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:183万
展开全部
table表的创建是通过构造表达式完成的,最简单的构造表达式就是{},所以asd={}不能省略
创建完table表后即可以对table表的项进行定义,即asd[1]="123asd"或asd.bbc = 123
又因为前面定义的是全局的table表所以在同文件可以调用
追问
如果我加上了声明语句asd={}
然后进行赋值asd[1]="123asd"
之后声明语句asd={}被再次调用
那么还能获得asd[1]的值么?
追答
再次进行asd={}构造后,可以认为asd表的指针指向了新的内存地址
而原来的表的地址如果没有被指向(比如说在之前使用类似cde = asd这样的语句)
那么在下次lua回收机制执行的时候会被清理
个人理解
yaoyue1019
2012-03-08 · 知道合伙人互联网行家
yaoyue1019
知道合伙人互联网行家
采纳数:804 获赞数:3392
擅长lua脚本 与android前端交互设计

向TA提问 私信TA
展开全部
从某种程度上说是可行的
如果修改了默认值的话 是可行的
一般情况下 普通的没声明过的变量的值是nil
但如果我们把默认值设置成一个新生成的table
那么就可以直接这样访问了
一个简单的例子
setmetatable(_G,{__index = function(t,key)
local res = rawget(t,key) or {}
t[key] = res
return res
end})
--下面是测试
require"base"
asd[1]="123asd"
aaa[4]="ffff"
print(asd)
print(aaa)

针对你对楼上的回答
每次执行asd = {} 如果原先的表没被其他地方所持有 则那个表会被销毁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淦海瑶s1
2012-03-06 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:758万
展开全部
在一个文件中,可以调用在他前面声明的全局变量,并且可以修改

别的问题就是,asd要不是二维数组,那么asd[1]只有两个字符,装不下这么多字符的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式