为什么这个语法有效:
if ({A=1,B=1,C=1})["A"] then print("hello") end
Run Code Online (Sandbox Code Playgroud)
虽然这不会:
local m = {string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)}
if (m)["A"] then print("hello") end
Run Code Online (Sandbox Code Playgroud)
???
我认为这是因为字符串不是数组,但是如何将字符串("a,b,c")转换为数组({a=1,b=1,c=1})?
这条线
local m = {string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)}
Run Code Online (Sandbox Code Playgroud)
相当于这个
local v = string.sub(string.gsub("A,B,C,", ",", "=1,"),1,-2)
local m = {v}
Run Code Online (Sandbox Code Playgroud)
我希望您同意,这显然不会有在表中分配多个值的行为m。
要将简单a=1,b=1,c=1类型字符串“解析”到表中,string.gmatch手册中的第二个示例很有帮助:
下一个示例将给定字符串中的所有 key=value 对收集到表中:
Run Code Online (Sandbox Code Playgroud)t = {} s = "from=world, to=Lua" for k, v in string.gmatch(s, "(%w+)=(%w+)") do t[k] = v end
| 归档时间: |
|
| 查看次数: |
3003 次 |
| 最近记录: |