Lua编程示例(八):生产者-消费者问题
这个问题是比较经典的啦,基本所有语言的多线程都会涉及到,但是没想到lua的这个这么复杂抓狂看了好长时间才算看明白,先上个逻辑图:开始时调用消费者,当消费者需要值时,再调用生产者生产值,生产...Lua与C语言间的交互实例
lua是一门轻巧、灵活、扩展性很强的脚本语言,它可以很容易的嵌入到其他语言(c/c++)中使用,这主要得益于其提供了功能强大的capi,这让其跟c/c++间的互调成为一件很轻松的事。lua调用clua调用c函数,...- 0
- 0
- 0
- 0
- 0
Lua判断数据类型的方法
一、判断数据类型的方法type(xxxx)这个函数的返回值是string类型也就是说:复制代码代码如下:a=type(x)--a="nil"b=type(a)--b="string"a=type(nil)--a="nil"二、lua脚本语言的8种基本数据类型1.数...- 0
- 0
- 0
- 0
- 0
详解Lua中的元表概念
元表是一个表,有助于改变它连接到一个密钥集和相关的元方法的帮助下表的行为。这些元方法是强大的lua功能,如:更改/添加功能,以运算符表查看metatables当钥匙不在使用__index元表中的表可用。有迹...- 0
- 0
- 0
- 0
- 0
Lua中数字for循环实例
看以下代码:复制代码代码如下:fori=1,2doprint(i)i=3end输出是什么?如果习惯了c/c++语言,会觉得因为改变了控制变量i为3,所以在执行第二次循环体之前判断不通过,所以输出是1。但结果输出是1和2,...- 0
- 0
- 0
- 0
- 0
Lua中的函数写法简明示例
函数定义:用关键字function定义函数,以关键字end结束局部变量:用关键字local定义.如果没有用local定义,即使在函数内部定义定义的变量也是全局变量!函数可以有多个返回值:returna,b,c...平行赋...- 0
- 0
- 0
- 0
- 0
Lua面向对象编程之类的简单实现方式
先来看一段程序:复制代码代码如下:functioncreate(name,id)localobj={name=name,id=id}functionobj:setname(name)self.name=nameendfunctionobj:getname()returnself.nameendfunctionobj:setid...- 0
- 0
- 0
- 0
- 0
实现Lua中数据类型的源码分享
概述在lua中有8种基础类型:nil、boolean、number、string、userdata、function、thread和table。可以使用函数type查看某个变量或值的类型,返回相应的类型名称。像其他动态语言一样,在语言中没有类型定...- 0
- 0
- 0
- 0
- 0
Lua中编译执行代码相关的函数详解
可以说lua之所以称为是一种解释型的语言,正是因为有诸如load这样的函数,因为这样的函数使得lua可以执行动态生成的代码。下面具体来分析这些函数。load函数load函数原型如下:复制代码代码如下:loa...- 0
- 0
- 0
- 0
- 0
Lua中使用.和:调用函数的区别
tb.print和tb:print的含义略微不同,:调用函数会多传递进去一个self进去,差不多相当于oop里面的成员函数调用.但是和oop里面成员函数/非成员函数不同的是,lua里面的非成员函数.调用,他不是静态的...- 0
- 0
- 0
- 0
- 0
Lua实现__add方法重载示例
实现加法(__add)重载代码示例:复制代码代码如下:dolocalinfor_class={};functioninfor_class.create(_t)localnewtable={};setmetatable(newtable,infor_class);--setthemetatablefori,vinpairs...- 0
- 0
- 0
- 0
- 0
Lua中rawset和rawget的作用浅析
rawget是为了绕过__index而出现的,直接点,就是让__index方法的重写无效。(我这里用到"重写"二字,可能不太对,希望能得到纠正)复制代码代码如下:window={}window.prototype={x=0,y=0,width=100,he...- 0
- 0
- 0
- 0
- 0
Lua中的__index方法详解
当我们访问一个表的不存在的域,返回结果为nil,这是正确的,但并不一定正确。实际上,这种访问触发lua解释器去查找__indexmetamethod:如果不存在,返回结果为nil;如果存在则由__indexmetamethod返回...- 0
- 0
- 0
- 0
- 0
Lua中释放table占用内存的方法
table的大小是动态变化的。看如下代码:复制代码代码如下:tb={1,2,3}--数组大小4,hash表大小1(不管hash表有没有存数据,它的大小最小为1)tb[5]=5tb[100]=100--数组大小4,hash表大小2因为后插入的...- 0
- 0
- 0
- 0
- 0
举例详解Lua中的协同程序编程
协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行。随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要求暂停。上述定义可能看起来...- 0
- 0
- 0
- 0
- 0
Lua学习笔记之表达式
前言这里总结的内容和其它语言的基本类似,所以这里就只是基本的进行总结。不做详细的讲解。算术操作符lua支持常规的算术操作符有:”+”(加法),”-”(减法),”*”(乘法),”/”(除法),”^”(指数),”%”(取模),...- 0
- 0
- 0
- 0
- 0
Lua判断Table是否为空的方法(空的table即{})
判断方法结论:复制代码代码如下:a={}ifnext(a)~=nilthendosomethingend最近在项目里面大量使用的lua,其中lua的table是lua中重要的数据结构,可以被用来当做c++中的数组,vector,map来使用。如何判...- 0
- 0
- 0
- 0
- 0
Lua中关于求模与求余的区别介绍
我觉得很多人搞不清楚这两个概念的区别,刚好在翻译lua手册时遇到%与math.fmod这两个操作,顺便做一下说明吧。求模与求余的区别。假设对a与b两个整数做求模或求余操作。那么第一步是先求整数商c,即a...- 0
- 0
- 0
- 0
- 0
lua中赋值类型代码详解
我们来看看luavm在解析下面源码并生成bytecode时的整个过程:foo="bar"locala,b="a","b"foo=a首先我们先使用chunkyspy这个工具来看看vm最终会具体生成什么样的vminstructions在这里,开头为[数字...- 0
- 0
- 0
- 0
- 0