如何解决 Lua 中 string.format 参数不正确抛出异常问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决 Lua 中 string.format 参数不正确抛出异常问题相关的知识,希望对你有一定的参考价值。
参考技术A 进入lua调试命令行:>debug.debug()
lua_debug> print(string.format('%p','xx'))
<debug command>:1: invalid option '%p' to 'format'
格式化字符串遵循 ISO C 函数 sprintf 的规则。 不同点在于选项 *, h, L, l, n, p 不支持本回答被提问者和网友采纳
如何编写文件以通过 Lua 语言保存随机数
【中文标题】如何编写文件以通过 Lua 语言保存随机数【英文标题】:How to write file for save a random number by Lua languages 【发布时间】:2021-11-04 06:09:30 【问题描述】:这是我的功能
function randomNum2(num)
f = io.open("result.csv", "a+")
num = math.randomseed(os.clock()*100000000000)
f:write(string.format("%s\n", num))
f:close()
return "TETB"..(math.random(1000000000))
end
result.csv
文件的输出喜欢。
nil
nil
nil
nil
nil
nil
nil
nil
nil
我想知道如何像这样将随机数保存到result.csv
文件中。
TETB539286665
TETB633918991
TETB892163703
TETB963005226
TETB359644877
TETB131482377
关于问题是什么以及如何解决它的任何想法?谢谢。
【问题讨论】:
顺便说一句,在程序开始时调用math.randomseed
一次。见***.com/questions/35455489/…
【参考方案1】:
math.randomseed
函数不返回任何内容,它只是将math
库设置为使用某个数字作为“随机”数字的基础,您应该在运行math.randomseed
后使用math.random
函数配置库,math.random
返回一个数字,你可以指定它们之间的范围,如果你不这样做,它可能会返回一个浮点数。
另外,num
参数没有被使用,可以删除或重命名为max
,并用作math.random
调用中的参数以用作最大结果数。
【讨论】:
【参考方案2】:做更多local
变量。
并且不要连接 (..) string
和 number
。
即时将math.random()
转换为tostring()
。
我将您的版本更正为...
randomNum2=function()
local f = io.open("result.csv", "a+")
local rand = "TETB"..tostring(math.random(100000000000))
f:write(string.format("%s\n", rand))
f:close()
return rand
end
...和math.randomseed()
不是必需的。
然后你会得到一个你想要的结果.csv。 在交互式独立 Lua 解释器中测试...
> for i=1,10 do randomNum2() end
> os.execute('cat result.csv')
TETB73252732829
TETB48306115776
TETB83524202926
TETB53376530639
TETB39893346222
TETB60394413785
TETB97611122173
TETB35725172461
TETB48950449408
TETB15779990338
true exit 0
-- Next example puts out the return of the function.
-- That can be used without reading the file.
-- To check what was written/append to result.csv on the fly.
> print(randomNum2())
TETB73113866427
【讨论】:
以上是关于如何解决 Lua 中 string.format 参数不正确抛出异常问题的主要内容,如果未能解决你的问题,请参考以下文章