lua中table能否直接赋值
比如直接进行全局的赋值asd[1]="123asd";(省略了asd={};)然后在同文件中另外个函数能否直接调用?如果我加上了声明语句asd={}然后进行赋值asd[1...
比如直接进行全局的赋值
asd[1]="123asd";(省略了asd={};)
然后在同文件中另外个函数能否直接调用?
如果我加上了声明语句asd={}
然后进行赋值asd[1]="123asd"
之后声明语句asd={}被再次调用
那么还能获得asd[1]的值么? 展开
asd[1]="123asd";(省略了asd={};)
然后在同文件中另外个函数能否直接调用?
如果我加上了声明语句asd={}
然后进行赋值asd[1]="123asd"
之后声明语句asd={}被再次调用
那么还能获得asd[1]的值么? 展开
3个回答
展开全部
table表的创建是通过构造表达式完成的,最简单的构造表达式就是{},所以asd={}不能省略
创建完table表后即可以对table表的项进行定义,即asd[1]="123asd"或asd.bbc = 123
又因为前面定义的是全局的table表所以在同文件可以调用
创建完table表后即可以对table表的项进行定义,即asd[1]="123asd"或asd.bbc = 123
又因为前面定义的是全局的table表所以在同文件可以调用
追问
如果我加上了声明语句asd={}
然后进行赋值asd[1]="123asd"
之后声明语句asd={}被再次调用
那么还能获得asd[1]的值么?
追答
再次进行asd={}构造后,可以认为asd表的指针指向了新的内存地址
而原来的表的地址如果没有被指向(比如说在之前使用类似cde = asd这样的语句)
那么在下次lua回收机制执行的时候会被清理
个人理解
展开全部
从某种程度上说是可行的
如果修改了默认值的话 是可行的
一般情况下 普通的没声明过的变量的值是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 = {} 如果原先的表没被其他地方所持有 则那个表会被销毁
如果修改了默认值的话 是可行的
一般情况下 普通的没声明过的变量的值是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 = {} 如果原先的表没被其他地方所持有 则那个表会被销毁
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在一个文件中,可以调用在他前面声明的全局变量,并且可以修改
别的问题就是,asd要不是二维数组,那么asd[1]只有两个字符,装不下这么多字符的
别的问题就是,asd要不是二维数组,那么asd[1]只有两个字符,装不下这么多字符的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询