有没有一种方法可以将层次结构字符串转换为表格形式?

假设输入是A.B.C.D
输出应该是一个遍历输入上方的表:A = {}A.B = {}A.B.C = {}A.B.C.D = {}
谢谢。

最佳答案

显而易见的解决方案是解析字符串并从中构造层次结构表。但是,更聪明的解决方案是让lua为您做这件事。通过一些元魔术和函数环境操作,可以完成此操作:

dump = require 'pl.pretty'.dump -- convenient table dumper from penlight

function createtable(str)
  local env_mt = {}
  env_mt.__index = function(t, k)
                     rawset(t, k, setmetatable({}, env_mt))
                     return rawget(t, k)
                   end
  local env = setmetatable({}, env_mt)
  local f = loadstring("return "..str)
  setfenv(f, env)
  f()
  return env
end

dump( createtable "A.B.C.D" )

输出:
{
  A = {
    B = {
      C = {
        D = {
        }
      }
    }
  }
}

10-07 18:59
查看更多