• 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

  • 相关阅读:
    直击微软第九频道著名主持Robert Green 对话一站式示例代码库大老板梁梅女士
    微软发布中文版一站式示例代码浏览器
    每日一例,练就编程高手
    微软发布Visual Studio 2012 示例代码浏览器
    微软发布Sample Browser for Windows 8版:5000示例代码,"触手可及"
    arthas使用总结
    前端如何生成二维码
    golang的helloworld以及nonmain package的troubleshooting
    监控文件的网页工具
    postfix + courierimap + squirrelMail 邮件服务器
  • 原文地址:https://www.cnblogs.com/lebronzhang/p/6142593.html
Copyright © 2020-2023  润新知