-
抖音运营变现手册大全:从0到1详解内置库的实现
资源介绍
第八章 内置库的实现
界畵畡 电甮甲 自带了几个库,实现了一般应用最基本的需求。这些库的实现仅仅使用了 界畵畡 官方手册中提到
的 畁畐畉 ,对 界畵畡 核心部分的代码几乎没有依赖,所以最易于阅读。阅读这些库的实现,也可以加深对 界畵畡
畁畐畉 的印象,方便我们自己扩展 界畵畡。
界畵畡 电甮甲 简化了 界畵畡 电甮由 中模块组织方式,这也使得代码更为简短。
这一章,就从这里开始。
8.1 从 math 模块看 Lua 的模块注册机制
数学库是最简单的一个。它导入了若干数学函数,和两个常量 異畩 与 畨畵畧略。我们先看看它如何把一组
畁畐畉 以及常量导入 界畵畡 的。
源代码 甸甮由町 畬畭畡畴畨畬畩畢甮畣町 畭畡畴畨畬畩畢
甲申男 static const luaL_Reg mathlib [] = {
甲申甸 {"abs", math_abs},
甲申甹 {"acos", math_acos},
甲甴田 {"asin", math_asin},
甲甴由 {"atan2", math_atan2},
甲甴甲 {"atan", math_atan},
甲甴申 {"ceil", math_ceil},
甲甴甴 {"cosh", math_cosh},
甲甴电 {"cos", math_cos},
甲甴甶 {"deg", math_deg},
甲甴男 {"exp", math_exp},
甲甴甸 {"floor", math_floor},
我没有列完这段代码,因为后面是雷同的。界畵畡 使用一个结构 luaL_Reg 数组来描述需要注入的函数和
名字。结构体前缀是 畬畵畡界 而不是 畬畵畡 ,是因为这并非 界畵畡 的核心 畁畐畉 部分。利用 luaL_newlib 可以把这
组函数注入一个 畴畡畢畬略。代码见下面:
源代码 甸甮甲町 畬畭畡畴畨畬畩畢甮畣町 畬畵畡畯異略畮 畭畡畴畨
甲男电 LUAMOD_API int luaopen_math (lua_State *L) {
甲男甶 luaL_newlib(L, mathlib);
甲男男 lua_pushnumber(L, PI);
甲男甸 lua_setfield(L, -2, "pi");
由由由
- 上一篇: 指令结构-从0到1抖音运营变现手册大全
- 下一篇: 字节码的运行-从0到1抖音运营变现手册大全