只是尝试生成一系列(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/