将 Python 函数转换为 Lua 函数

Maddy_15

我正在尝试将现有的 python 函数转换为 lua 函数。但是我的 lua 函数产生的结果与 python 函数不同。任何帮助表示赞赏。

蟒蛇功能:

import json

test = '{"http://localhost:8080/":{"phone":{"-detail/phone detail.template.html":"5167n,a,7,2","s/motorola-xoom-with-wifi.json":"516a0,5,4,3"},"favicon.ico":"016ad,3,3,2","img/phones/motorola-xoom-with-wi-fi.":{"1.jpg":"*02s,2s,4v,h3|116da,o,l,6","2.jpg":"*02s,2s,4v,kp|116da,j,i,8","3.jpg":"*02s,2s,4v,ob|116da,o,m,8,7,,7,7,7","4.jpg":"*02s,2s,4v,rx|116da,o,m,9,8,,7,7,7","5.jpg":"*02s,2s,4v,vj|116da,p,m,a,8,,7,7,7"}}}'


def tri(param):
  t = {}
  for key in param:
    if key not in param:
        continue
    if isinstance(param[key], dict) and param[key] is not None:
        flat = tri(param[key])
        for x in flat:
            if x not in flat:
                continue
            t[key + x] = flat[x]
    else:
        t[key] = param[key]
return t


print(tri(json.loads(test)))

Lua 代码(与 python 函数产生的结果不同)

local json = require('cjson')

local test = '{"http://localhost:8080/":{"phone":{"-detail/phone-detail.template.html":"5167n,a,7,2","s/motorola-xoom-with-wi-fi.json":"516a0,5,4,3"},"favicon.ico":"016ad,3,3,2","img/phones/motorola-xoom-with-wi-fi.":{"1.jpg":"*02s,2s,4v,h3|116da,o,l,6","2.jpg":"*02s,2s,4v,kp|116da,j,i,8","3.jpg":"*02s,2s,4v,ob|116da,o,m,8,7,,7,7,7","4.jpg":"*02s,2s,4v,rx|116da,o,m,9,8,,7,7,7","5.jpg":"*02s,2s,4v,vj|116da,p,m,a,8,,7,7,7"}}}'

local function tri(param)
    t = {}
    for key in pairs(param) do
      if param[key] == nil then end
      if type(param[key]) == "table" then
        flat = tri(param[key])
        for k in pairs(flat) do
            t[key .. k] = flat[k]
        end
      else
        t[key] = param[key]
      end
  end
  return t
end


print(json.encode(tri(json.decode(test))))
小猪
local function tri(param)
    t = {}            -- every time we call tri t will be "reset" to an empty table
    for key in pairs(param) do
      if param[key] == nil then end
      if type(param[key]) == "table" then
        flat = tri(param[key])    -- here we call tri, but we still need t!
        for k in pairs(flat) do
            t[key .. k] = flat[k]
        end
      else
        t[key] = param[key]
      end
  end
  return t
end

至少使t全球化应该可以解决这个问题。但是也没有理由flat成为全球性的,所以我们也将其设为本地化。

local function tri(param)
    local t = {}
    for key in pairs(param) do
      if param[key] == nil then end
      if type(param[key]) == "table" then
        local flat = tri(param[key])
        for k in pairs(flat) do
            t[key .. k] = flat[k]
        end
      else
        t[key] = param[key]
      end
  end
  return t
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将Lua的模数pow()函数转换为Python

来自分类Dev

将Mathematica函数转换为lua

来自分类Dev

将Python函数转换为R函数

来自分类Dev

将Python函数转换为R函数

来自分类Dev

将C函数转换为Python函数

来自分类Dev

python:将for循环转换为递归函数

来自分类Dev

python将巨函数转换为Class

来自分类Dev

python将方法转换为函数

来自分类Dev

将Javascript函数转换为Python

来自分类Dev

python:将for循环转换为递归函数

来自分类Dev

将程序转换为Python中的函数?

来自分类Dev

将数学函数从MATLAB转换为Python

来自分类Dev

将函数从 matlab 转换为 python

来自分类Dev

需要帮助将 Ruby 函数转换为 Python 函数

来自分类Dev

lua函数转换为C ++函数

来自分类Dev

将Python函数转换为可重用的类

来自分类Dev

python将字符串转换为逻辑门函数

来自分类Dev

Python将递归置换函数转换为迭代

来自分类Dev

如何将哈希函数从Python转换为R

来自分类Dev

Python - 将函数参数输入转换为十六进制

来自分类Dev

python:将列表理解转换为 lambda 函数?

来自分类Dev

将数学函数从 Python 转换为 C++

来自分类Dev

将 python 函数转换为 Javascript/node.js

来自分类Dev

(Lua 5.1) 如何将字符串转换为函数

来自分类Dev

将函数转换为Lambda

来自分类Dev

将函数转换为useCallback

来自分类Dev

将函数转换为useCallback

来自分类Dev

将方法转换为函数

来自分类Dev

将宏转换为函数