string - 尝试调用字符串值

标签 string lua

只是尝试生成一系列(10 个循环)随机十六进制字符串..这是我的代码

math.randomseed(os.time())

function genRanHex(length)
    genRanHex = ""
    for count = 1, length, 1 do
        num = math.random(0,15)
        genRanHex = genRanHex..string.upper(string.format("%x", num))
    end
    return genRanHex
end

for c = 1, 10, 1 do
    print(genRanHex(8))
end

出现以下错误:

lua: main.lua:13: 尝试调用字符串值(全局“genRanHex”) 堆栈回溯: main.lua:13:在主 block 中 [C]:在?

感谢您的帮助

最佳答案

您将使用您在函数中构建的字符串 genRanHex 覆盖保存该函数的全局变量 genRanHex。解决方案是 (1) 本地化所有内容 (2) 使用不同的名称或 (3) 完全摆脱低效的字符串连接。以下是我如何重写它,利用 string.char 隐式执行连接:

math.randomseed(os.time())

local function randomHexBytes(n)
    if n == 0 then return end
    return ("%X"):format(math.random(0, 0xF)):byte(), randomHexBytes(n-1)
end

local function genRanHex(n)
    return string.char(randomHexBytes(n))
end

for _ = 1, 10 do
    print(genRanHex(8))
end

关于string - 尝试调用字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74229635/

相关文章:

c - 在 sscanf 中指定可变字段宽度

java - 如何改进以下算法以递归地删除字符串中从右到左相邻的重复字符?

java - 如何将数字字符串转换为不同的 ArrayList

lua - 只要堆栈保持平衡,是否可以修改堆栈值?

function - 在Lua中,如何正确地将nil参数设置为某个默认值?

使用lua源编译C代码

java - 迭代 nextLine 函数的问题

C - 如果长度不同,则将 2 个字符串中的数字加在一起

nginx - 是否可以在 NGINX 中合并多个响应并发送一个响应

string - 使用 string.gmatch() 通过\n 或\r 分割字符串