Swig Lua 草案

lua-users home
wiki

Swig/Lua 草案

来自正在进行的工作的评论摘录

多阶段模块加载

Lua 的一个座右铭是“机制,而不是策略”。事实上,Lua 没有预定义的对象模型。相反,它提供了一层薄薄的语法糖(: 和 self)以及一组强大的机制(环境、元表、闭包和协程),这些机制共同允许广泛的对象风格。

由于这是 Lua 的方式,我们必须在设计 SWIG/Lua 时遵循它。这意味着我们必须在 SWIG 和 Lua 之间提供一定程度的**灵活性**。另一方面,我们应该注意不要使 Lua 在其模块接口方面与其他 SWIG 目标语言有太大差异,这会降低可重用性。

SWIG 在灵活性方面确实提供了很多,但依赖于 SWIG 类型映射和指令技巧会使接口混乱。它还涉及编写一些 C 代码,而这通常不是 SWIG 和 Lua 用户感兴趣的!

这导致了在 Lua 本身中实现 Lua 侧包装细节的自然解决方案 [1]。

我们提供以下基本机制

阶段 1 和 2 很简单。阶段 3 和 4 依赖于**声明式**技术以实现清晰度和强大功能。

[1] 相比之下,SWIG/Lua 的当前官方实现使用了一种单一的任意对象方案,该方案在运行时 SWIG 库中的某个地方用 C 硬编码。是的,生成的模块仍然可以进行调整,但高级信息已经丢失,这是一种脆弱的方法。


-- ThomasLefort

欢迎评论。


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2007 年 10 月 10 日凌晨 12:57 GMT (差异)