如何解决 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变量。 并且不要连接 (..) stringnumber。 即时将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 参数不正确抛出异常问题的主要内容,如果未能解决你的问题,请参考以下文章

程序lua的string.format为什么比".."慢

格式化

如何使用布尔变量格式化 lua 字符串?

lua 实现策划需要保留的小数位数

如何编写文件以通过 Lua 语言保存随机数

Lua中的字符串拼接浅析