Blitz Lua 函数接口

lua-users home
wiki

本页面描述了 BlitzLua 的“函数接口”,这是一个用 BlitzMAX 编写的 Lua 运行时环境。

BlitzLua 函数接口

函数接口”直接将 BlitzMAX 函数映射到 Lua 对应函数。给定 BlitzMAX 模块的所有函数都驻留在一个 Lua 表中,其名称与底层模块相同:例如,在 Lua 中,BlitzMAX 函数 createWindow 位于模块 BRL.MaxGUI 中,由 brl.maxgui.createWindow 复制(其中 brl 是一个全局表)。可选的“import”机制使给定模块的所有函数都成为全局函数,从而无需使用模块名称作为前缀。

MaxGuiExample 包含两个简单的示例,说明了此接口的使用。

命名约定

由于 Lua 是一种区分大小写的语言(而 BlitzMAX 不是),因此以下命名约定适用

如果有任何不确定性,请参考包中的函数引用。

参数处理和类型转换

Lua 函数参数等于相应 BlitzMAX 函数的参数,任何默认值都会被正确地保留(即,相应的 Lua 参数可以是 nil)。类型转换如下

此外,

值得注意的细节:由于 BlitzMAX 有自己的“垃圾收集”,因此任何 BlitzMAX 对象都必须在创建后不久被显式引用(从 BlitzMAX 本身内部!),以防止被删除。这是在内部使用 BlitzMAX “句柄”(它是给定对象的逐一代表)完成的 - 事实上,传递给 Lua 的是对象的句柄,而不是对象本身。因此,现在由 Lua 来“销毁”不再需要的任何 BlitzMAX 对象。因此,每个 BlitzMAX “createXXX”函数(或“loadXXX”或类似函数)用于创建类型为 XXX 的对象,现在也具有“destroyXXX”对应函数(在同一个模块中),必须调用该函数来删除该对象。

任何 BlitzMAX 常量也可以在属于定义模块的表中使用 - 它们的名称已保留为大写(例如 brl.event.EVENT_WINDOWCLOSE),与 BlitzMAX 中一样。

--AndreasRozek


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2007 年 5 月 19 日下午 6:18 GMT (差异)