Lua
文章平均质量分 74
xingxinmanong
这个作者很懒,什么都没留下…
展开
-
Lua 基础之 Lua 程序
lua 调用 c 函数与 c 调用 lua 函数一样,都是通过 CAPI 和一个栈来实现,lua 调用 c 函数有以下几个步骤 1. 在 c 代码中定义函数 lau.h 中定义了要注册到 lua 中的 c 函数的原型,虽然我测试的时候不使用这个原型也不会出错,但还是要遵循规范比较好原创 2017-07-25 09:54:39 · 1513 阅读 · 0 评论 -
Lua 之使用 VS 生成解释器、编译器和链接库
lua 是开源的,我们可以从官网下载源代码,其源代码是用纯 c 写的,因此如果想要在 c 项目中嵌入 lua 代码很简单,只需要把 lua 的源代码包含到 c 项目里面即可。但这肯定不是最好的方式,更好的方式是把 lua 源代码编译成链接库,要使用的时候直接包含链接库和必要的头文件即可。原创 2017-07-28 15:03:48 · 3162 阅读 · 2 评论 -
Lua 基础之扩展应用程序
扩展应用程序 是指以 c 语言为主导,在 c 代码中调用 lua 代码,一种常见的方式是可以把 lua 文件当作配置文件,然后在 c 程序中加载解析原创 2017-07-25 09:51:20 · 829 阅读 · 0 评论 -
Lua 基础之模块
模块系统的设计目标是可以使用不同的方式来共享代码,一个模块就是一个代码库,其它模块 可以使用 require 函数来加载,加载后得到模块导出的所有东西,如函数、常量、全局变量等。一个比较好的方式是让模块返回一个 table 并保存在一个全局变量中,然后外部模块直接使用这个全局变量来操作 table原创 2017-07-19 10:01:23 · 544 阅读 · 0 评论 -
Lua 基础之弱引用 table
lua 的垃圾回收器只会回收没有引用的对象,有些时候并不能回收程序员认为的垃圾。比如数组里的元素在其它地方已经没有引用了,但因为还在数组中,因此垃圾回收器并不会去回收它弱引用 table 告诉回收器一个元素在 table 中的引用不应该阻止它的回收。如果一个对象的引用都是弱引用,那回收器就会回收这个对象弱引用 table 有三种:弱引用 key,弱引用 value 和弱引用原创 2017-07-19 09:58:34 · 590 阅读 · 0 评论 -
Lua 基础之面向对象编程
lua 中的 table 其实就是对象,理由如下 1. table 与对象一样可以拥有状态 2. table 与对象一样拥有一个独立于其值的标识 self,值相同的两个 table 是两个不同的对象 3. table 与对象一样拥有独立于创建者和创建地的生命周期方法table 中字段的值可以是任意类型,如果某个字段的值是一个函数,那这个函数就称为对象的方原创 2017-07-19 09:48:25 · 378 阅读 · 0 评论 -
Lua 基础之元表
元表与元方法Lua 中每个值都有一套预定义的操作集,表示这个值可以有什么操作,这个操作集就是这个值的元表。对一个值进行某种操作,lua 首先会查找它的元表看看有没有对应的字段,如果找到了字段,则调用该字段的值,也就是元方法,它是一个函数。 比如进行 a+b 操作时,先查找 a 或 b 的元表中有没有字段 __add,如果有这个字段,调用该字段对应的元方法,否则操作不合法。原创 2017-07-18 10:07:03 · 336 阅读 · 0 评论 -
Lua 基础之迭代器
迭代器是一种可以遍历集合中所有元素的机制,lua 中迭代器使用函数表示,每调用函数一次,返回集合中的下一个元素迭代器除了定义一个函数之外,还必须知道元素的集合和当前的位置,因此还需要两个外部变量,这点和闭包一样,因此迭代器可以看成是使用闭包实现的。原创 2017-07-18 10:01:33 · 338 阅读 · 0 评论 -
Lua 基础之函数进阶
闭包 closure函数可以嵌套函数,内层函数可以访问外层函数的局部变量,这种特性叫做和函数闭包lua 中除了全局变量和局部变量之外,还有一种叫“非局部变量”的变量闭包 closure 的概念是一个函数和该函数能访问的所有“非局部变量”,lua 其实只有闭包,没有函数,函数只是特殊的闭包而已,即没有“非局部变量”原创 2017-07-18 09:59:01 · 1463 阅读 · 0 评论 -
Lua 基础之与 C 交互
lua 是一种嵌入语言,并不能独立运行,而是一个可以链接到其它应用程序的库。lua 是使用 c 语言开发的,因此它与 c 语言的交互非常简单,但 lua 作为一门十分流行的脚本语言,不仅能嵌入到语言中,还能嵌入到 java,c# 等其它语言中。lua 与 c 语言的交互方式有两种,一种是以 c 语言为主,lua 作为 c 语言调用的一个库,这种方式的 c 代码称为 应用程序代码原创 2017-07-21 10:14:05 · 557 阅读 · 0 评论 -
Lua 基础之协同程序
协同程序协同程序类似于多线程中的线程。lua 提供 非对称的协同程序 ,即 lua 提供两个函数来控制协同程序的执行,一个用于挂起执行,另一个用于恢复执行。协同程序的函数放置在表 coroutine 中,创建时传入一个函数,生成一个 thread 类型的值协同程序的四种状态:挂起(suspended),运行(running)、死亡(dead),正常(normal)原创 2017-07-21 10:08:34 · 334 阅读 · 0 评论 -
Lua 基础之函数
lua 函数的实参个数可以与形参不一致,实参少了则后面的参数为 nil,实参多了则舍弃多余的原创 2017-07-17 10:42:33 · 438 阅读 · 0 评论 -
Lua 基础之语句
多重赋值lua 可以同时为多个变量赋值,如果参数不够则后面的变量赋 nil,如果参数过剩则舍弃多出的。原创 2017-07-17 00:36:23 · 331 阅读 · 0 评论 -
Lua 基础之运算符
算术运算符lua 的算术运算符有加减乘除、n次方(或开方)、求余等。原创 2017-07-17 00:34:32 · 9679 阅读 · 2 评论 -
Lua 基础之数据类型
Lua 有 nil,boolean,number,string,table,function 和 userdata 七种数据类型。我们可以用 type() 函数来返回一个变量的类型,返回值是 string。原创 2017-07-16 17:44:13 · 781 阅读 · 0 评论 -
【lua】使用 tolua 实现 lua 与 c++ 交互
tolua 也叫 tolua++,是一个第三方库,简化了 lua 访问 c/c++ 的工作。tolua 自动导出 c/c++ 中的常量、变量、函数、类等,提供给 lua 直接访问和调用。lua 与 c 是可以直接相互访问的,不使用 tolua 或其它第三方库也可以实现 lua 调用 c/c++,但比较麻烦,开发效率太低。原创 2017-09-29 21:22:26 · 5779 阅读 · 1 评论