Lua 遥遥领先于其他选择。
... 最好的字符串操作支持,同时易于嵌入?
Lua 被设计为嵌入到 C 中;API 清晰易用;文档很棒。
其他一些回应贬低了 Lua 的字符串功能。我认为他们低估了 Lua。Lua 的字符串功能实际上在“只是连接”和正则表达式的全部复杂性之间找到了一个最佳点。字符串格式化能力非常强,通过“缓冲区”或表格来累加字符串简单高效。
在我看来,字符串扫描是设计中最好的部分之一。它没有“或”模式,但可以为您提供从正则表达式中获得的大部分内容,包括非常强大和优雅的“捕获”功能。例如,我可以通过捕获每个字符并对其应用函数来将字符串转换为十六进制:
s:gsub('.', function(c) return string.format("%02x", string.byte(c)) end)
或者我可以将非字母数字、非空格字符转义为八进制:
s:gsub('[^%w%s]', function(c) return string.format([[\%03o]], string.byte(c)) end)
这里展示的一些功能:
如果你想要一个上下文无关解析器的全部功能,你总是可以使用LPEG,一个由 Lua 的设计者之一编写的库。
性能非常重要(尤其是启动时间)
Lua 不断获得性能奖。启动速度快如闪电:整个系统(包括编译器、库、垃圾收集器和运行时系统)只有 150KB。为了避免暂停时间,Lua 提供了增量垃圾回收。另请参阅 SO 问题为什么 Lua 比其他脚本语言更快?
您可以通过预编译脚本来加快启动速度,但我从未发现有必要这样做——而且由于编译后的代码(相对于源代码)不可移植,预编译通常比它解决的问题更令人头疼。
需要在多个平台上轻松编译
Lua 使用纯 ANSI C 编译,甚至不需要 POSIX。我有一个在我的 PalmOS PDA 上运行的版本。
需要成为一种在 5 年内仍然存在的语言。
Lua 自 1993 年以来一直存在。此外,团队中提供最多支持的两名成员是 PUC-Rio 的终身教授。Lua是他们的生计。最后,整个系统只有 17,000 行代码。如果 Rio 明天从地图上掉下来,任何拥有良好本科编译器课程的人都可以拿起系统并维护它。会有很多志愿者。
我看过一点 Python 和 Lua,但对它们了解得还不够
请参阅 SO 问题 哪种游戏脚本语言更适合使用:Lua 还是 Python?.