在Lua中存储Lua脚本

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (23)

请尝试在这里和我裸露,不,这不是关于如何在Lua字符串中写多行。

我有一个用C ++编写的应用程序,可以显示,编辑和运行Lua脚本。此应用程序存储everthing,包括项目文件中的完整Lua脚本。

这里的问题是项目文件的格式也是一个Lua文件,用C ++编写(它不是编写项目文件的Lua引擎)。

编辑器中的示例Lua脚本:

-- Message
local message =
[["First" line
Second line
Last line]]

现在,我想将上面的脚本保存在lua文件中。示例项目文件:

-- Project file
projectName = "test"
options = {}
options.autoRun = false

-- Lua source
luaScript =
[=[
-- Message
local message =
[["First" line
Second line
Last line]]
]=]

我当然可以在[= [...] =]中包含Lua脚本(如示例中所示),但如果脚本也包含相同的序列,则它将无效。由于脚本是用户编写的任意脚本,因此我不能只假设某个序列尚未使用。

有没有办法在XML中包含“原始”数据,如CData?我会尽量避免编码脚本,因为我希望它在项目文件中可读。

最简单的是,如果[和]字符可以被转义,但显然不能。

我可以在单个字符串中拆分脚本,将其转义并连接起来:

-- Project file
projectName = "test"
options = {}
options.autoRun = false

-- Lua source
luaScript = "-- Message\n"..
            "local message =\n"..
            "[[\"First\" line\n"..
            "Second line\n"..
            "Last line]]\n"..

但是这个解决方案不容易直接在项目文件中读取和编辑。

如果这是不可能的,那么确定它是好的,我可能会使用编码方案而不是计划B.

提问于
用户回答回答于

您可以=在长字符串引用中使用所需数量[====[。只需=在字符串中找到最长的运行并添加一个=

您也可以%q在string.format中使用,它将引用所有需要引用的字符。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励