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这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功 ...
随机推荐
- java 终端练习
Java第一天笔记 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始 ---->所有程序--->附件---->命令提示符 Win7--&g ...
- css2--collapse
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Android 数据库管理— — —更新数据
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...
- JS生成二维码,允许中文转码
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...
- Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...
- Android系统启动过程
首先Android框架架构图: Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用. 启动的过程如下图所示:(图片来自网上,后面有地址) 下面将从And ...
- Mac小知识(不定时更新)
1.显示隐藏文件夹(在mac命令行中输入以下代码即可): 1)显示隐藏文件夹 defaults write com.apple.finder AppleShowAllFiles Yes &&a ...
- iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults
首先创建一个引导图的控制器类 UserGuideViewController.h和UserGuideViewController.m #import <UIKit/UIKit.h> #im ...
- 用python+selenium获取北上广深成五地PM2.5数据信息并按空气质量排序
从http://www.pm25.com/shenzhen.html抓取北京,深圳,上海,广州,成都的pm2.5指数,并按照空气质量从优到差排序,保存在txt文档里 代码如下: #coding=utf ...
- 数据存储之Cookie和Web Storage。
Cookie Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).接下来就谈谈cookie的一些利弊,coo ...