在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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 |
请发表评论