如何解决当我将标识符放入表中时,Lua会将标识符转换为字符串吗?
a = {}
b = "s"
a.b = "white"
a["s"] = 2
local keyset={}
local n=0
for k,v in pairs(a) do
n=n+1
keyset[n]=k
print(type(k))
-- output is String(x2)
end
如果我执行a.b,Lua会将b识别为字符串而不是标识符吗?
解决方法
来自Lua文档:
对于初学者来说,常见的错误是将a.x与a [x]混淆。第一种形式表示a [“ x”],即由字符串“ x”索引的表。第二种形式是由变量x的值索引的表。
如果有人想补充为什么Lua这样做,请随时进行!但是,这一问题现已得到解答。
UPD 在for循环之前,a = {['b'] = 'white',['s'] = 2}
。
忘记密钥集表;那什么都没转换。
#! /usr/bin/env lua
a = {}
b = "s" -- completely different variable,not used in a
a.b = "white" -- syntactic sugar for a["b"] = "white"
a["s"] = 2 -- variable b just happens to have same value as this key,so it fits
-- at this point there are two entries in a
-- a["b"] = "white" and a["s"] = 2
for k,v in pairs( a ) do
print( 'key:',k,type(k),' val:',v,type(v) )
end
print( b,a[b] ) -- retrieve value from a["s"] coincidental key fit
键:s字符串val:2个数字
键:b字符串val:白字符串
s 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。