Перейти к содержанию

TechnoViking

Administrators
  • Постов

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные TechnoViking

  1. Существует множество способов для решения вашей задачи. Будем опираться на использование Lua внутри Vikingo Engine.

    Способ через json:

    local json = require"json"
    local t = {a=100, b={c=200}}
    print(json.encode(t))

    1708426327-489604-lua-dump-table-json.jpg.3ef3c21fbcfadf5b6101a909a270ecbb.jpg

    Способ через inspect:

    local inspect = require"inspect"
    local t = {a=100, b={c=200}}
    print(inspect(t))

    1708426434-866888-lua-dump-table-inspect.thumb.jpg.0a145486f6e438e31c0eba44f5970bac.jpg

    Некоторые примеры из интернета на чистом Lua:

    #1

    function tprint(t, s)
        for k, v in pairs(t) do
            local kfmt = '["' .. tostring(k) .. '"]'
            if type(k) ~= "string" then
                kfmt = "[" .. k .. "]"
            end
            local vfmt = '"' .. tostring(v) .. '"'
            if type(v) == "table" then
                tprint(v, s or "" .. kfmt)
            else
                if type(v) ~= "string" then
                    vfmt = tostring(v)
                end
                print(type(t)..(s or '')..kfmt..' = '..vfmt)
            end
        end
    end
    
    local t = {a = 100, b = {c = 200}}
    print(tprint(t))

    1708426785-676610-lua-dump-table-print1.thumb.jpg.da4a7de463c5d7a3801253b61dac7410.jpg

    #2

    function dump_table(o)
        if type(o) == "table" then
            local s = "{ "
            for k, v in pairs(o) do
                if type(k) ~= "number" then
                    k = '"' .. k .. '"'
                end
                s = s .. "[" .. k .. "] = " .. dump_table(v) .. ","
            end
            return s .. "} "
        else
            return tostring(o)
        end
    end
    
    local t = {a = 100, b = {c = 200}}
    print(dump_table(t))

    1708426974-711408-lua-dump-table-2.thumb.jpg.06272851f821413c2c25ebd207d46801.jpg

  2. Если вы используете Vikingo Engine, то там можно использовать функцию split из пакета strings:

    local strings = require("strings")
    local s = "a,b"
    local elements = strings.split(s, ",")
    for _, element in pairs(elements) do
      print(element)
    end

    Ссылка на документацию по пакету https://vikingo.org/ru/engine/docs/lua-api/strings

  3. Для этого можно написать функцию на чистом lua:

    local charset = "abcdefghijklmnopqrstuvwxyz1234567890"
    function string.random(length)
        if length > 0 then
            return string.random(length - 1) .. charset:sub(math.random(1, #charset), 1)
        else
            return ""
        end
    end
    print (string.random(10))

    В engine есть встроенная функция random_string, которая входит в пакет utils.

    lua-random-string.thumb.gif.905be4caf5ca4bd4e88c4cb08401b26f.gif

×
×
  • Создать...