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这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功 ...
随机推荐
- 玩转mysql-5.7.9-winx64.zip解压版
解压zip文件,放到D盘 追加\bin到Path环境变量 修改my-default.ini,# basedir =D:\mysql_5.7.9_winx64# datadir =D:\mysql_5. ...
- STM32 HAL固件库编程的文件构架
对于我这种以前只接触过51和AVR单片机编程的小菜来说,现在开始学习STM32的编程,对于函数的功能以及C语言的语法都还好理解,难的是它提供的那一套硬件抽象层(HAL)驱动是怎么和其他的东东搭配在一起 ...
- STM32 Cube固件库编程之新建工程
Cube固件库是ST现在主推的固件库,并且在它的官网已经找不到原来的标准库可供下载.Cube固件库的构架图如下 这种新式构架可以有效的加快软件工程师的工程进度. 新建一个工程项目主要包括以下的步骤: ...
- vmware 安装 macos
http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html
- jquery判断div是否隐藏实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【转】slice,substr和substring的区别
首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度.直接看下面例子: var test = ' ...
- [windows]部分前缀以及其意义
前缀 意义 CS 类风格选项 CW 创建窗口选项 DT 文本绘制选项 IDI 图标的ID号 MB 消息框选项 SND 声音选项 WM 窗口消息 WS 窗 ...
- HDU5402 暴力模拟
因为题目中没有说是否是正整数,导致我们以为是DP,没敢做...太可惜了,不过现场赛绝对不会出现这种情况,毕竟所有的提问是都可以看见的. 题意:告诉一个矩阵,然后求从(1,1)到(n,m)能走过的最大和 ...
- git常见错误
一.如果输: $ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 提示出错信息:fat ...
- 关于discuz“终于解决“头像保存过程中发生网络错误,请重试"”的解决方法
1 php.ini里面allow_url_fopen = On2 将php.ini中的;upload_tmp_dir = 该行的注释符,即前面的分号“:”去掉,使该行在php.ini文档中起作用.up ...