Lua简介
Lua是一种扩展语言,脚本语言,还没有主程序的概念,类似于插件,也即不能直接使用,必须嵌入在牛逼的语言里使用,如Python。
Lua由C语言编写,可以在宿主语言里写一段c程序,让Lua的解释器使用,增加程序效率。
资源:
Lua manual里都不会深入探讨Lua背后设计的理念;
manual里的东西背后的实现在www.lua.org可查到;
设计背后的决定需要在Lua的网站里的技术文章中看;
有关Lua更深入的介绍,要看Roberto的Programming in Lua。
Lua值和类型
Lua是动态类型语言,也即所有的变量都不需要指定它的类型,由变量自己携带自己的类型。
Lua共有八种数据类型,nil,boolean,number,function,userdata,table,thread,string
Nil只有一个变量nil,它在条件判断语句里为false,通常表示无价值的值。
Number为实数类。
Userdata是用来将任意的C的数据提供给Lua使用,是指向原始内存块的指针。其中分为full data和light data,full data由Lua管理,light data由主机管理(不懂)
Function,Lua可以调用Lua或者C写的函数
Table
表示关联数组,nil和NaN不能作为值存在table中,若这样存,那么这个索引应该失效(未验证)
它是Lua中唯一的数据结构,它的key可以为任何类型,其中,table,function,thread,full userdata是以引用的形式作为索引key,每个表对应一组序列,也即从1开始,可以索引table,应该是按照存入顺序定义的。
Thread指代的是独立的线程,和操作系统的线程不是同一个东西,而且支持在不支持线程的系统中使用。
String 不可变序列,8位清除(不懂)
全局变量和环境
所有的全局变量var都会被转变为_ENV.var来使用,_ENV指的是Lua中的一个table。_ENV是外部变量,而不属于某个块。还有个_G(不知道用来干嘛的)
错误处理
如果Lua中有错误了,那么会返回宿主程序,可以在宿主程序中进行捕获处理。
如果需要在Lua中捕获错误,可以调用xpcall或lua_pcall在保护模式下调用出错程序(how)
Lua出错后,会抛出带有错误信息的error对象,带有错误的string message
元属性和元方法
元属性和元方法对应一个metatable,用来指定该对象的操作,一般数字,字符串,一个类型一个metatable,而像table和full userdata,每个对象各自有自己的metatable,metatable定义了元素的比较,运算等操作,例如“__add”,定义加法操作,可以用getmetatable和setmetatable
Lua简介的更多相关文章
- [lua]lua简介
在这篇文章中,我想向大家介绍如何进行Lua程序设计.我假设大家都学过至少一门编程语言,比如Basic或C,特别是C.因为Lua的最大用途是在宿主程序中作为脚本使用的. Lua 的语法比较简单,学习起来 ...
- 《Lua程序设计 第二版》学习笔记一
Lua简介 Lua是一种简单.可拓展.可移植及高效的脚本语言. 开始 Lua之间不需要分隔符 运行方式: Linux下: lua -i prog dofile("lib1.lua" ...
- [置顶] 轻量级语言Lua入门
作为一个脚本爱好者,而且是脚本(Perl)起家的我,一有空就喜欢学习下这些脚本语言.据说魔兽世界.愤怒小鸟都用到了它,所以今天研究下Lua这个叫法有点奇特的脚本 [转载请注明出处:http://blo ...
- 第1课 - 学习Lua的意义
学习Lua的意义 1.Lua简介 (1) 1993年.巴西 (2) 小巧精致的脚本语言,大小只有200K (3) 用标准C语言写成,能够在所有的平台上编译运行 (4) 发明的目 ...
- Redis进阶实践之七Redis和Lua初步整合使用
一.引言 Redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当 ...
- Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本
一.引言 学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何编写L ...
- Redis进阶实践之十九 Redis如何使用lua脚本
一.引言 redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入 ...
- C++与Lua交互之配置&交互原理&示例
|Lua 简介 Lua 是一种轻量小巧的脚本语言,也是号称性能最高的脚本语言,它用C语言编写并以源代码形式开放. 某些程序常常需要修改内容,而修改的内容不仅仅是数据,更要修改很多函数的行为. 而修改函 ...
- 玩转 lua in Redis
一.引言 Redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功 ...
随机推荐
- Android Full Screen
http://talentprince.github.io/blog/2015/01/07/android-activity-quan-ping-fang-fa-zong-jie/
- 头疼--windows之安装meteor.js
如果你的电脑是window,这篇文章会的对你有些帮助. 进入meteor官网下载的meteor for windows安装包老是安装失败而且很慢,很慢,经过一番研究之下,终于安装成功了,特此来分享下经 ...
- Python学习之运算符
Python运算符 算术运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 取模 ** 幂 // 整除 比较运算符 运算符 描述 == 等于 != 不等于 <> 不等于 &g ...
- VS2012新建项目出错:未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
刚刚重新做的系统,第一次打开vs2012新建项目时出现错误提示 通过查找解决办法发现方法有两种: 1:卸载两个windows更新补丁(KB2833957和KB2840642) 2:安装一个window ...
- Java—从文件中读取数据
1.FileInputStream() // 构建字节输入流对象,参数为文件名 FileInputStream fin = new FileInputStream("message" ...
- 关于反射率(reflectance)
首先,BRDF的内容因为见的多,用的多,所以比较容易理解.但是由BRDF引申出来的反射率,跟BRDF比不太常见,有些东西反而不易理解.尤其是组里的某大牛都不甚清楚(说明这个问题不太容易或者太过冷门), ...
- Unicode字符集下CString与char *转换 (解决中文乱码等)(转)
UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家 ...
- Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)
http://blog.csdn.net/zhyl8157121/article/details/8169172 目录(?)[-] 项目说明 开发环境的部署 数据库设计 服务器端程序设计Webserv ...
- Unity3D-ScrollRect 各参数的代码引用以及作用
版本Unity4.6: 以下为ScrollRect面板上各选项 对应 在代码里的属性: content(RectTransform): scrollRect的RectTransform组件,即滑动面板 ...
- 在Sublime Text 3 中安装SublimeLinter,Node.js进行JS&CSS代码校验
转载自:http://www.wiibil.com/website/sublimelinter-jshint-csslint.html 在Sublime Text中安装SublimeLinter,No ...