zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Spring学习总结(3)——Spring配置文件详解
    Hadoop学习总结(1)——大数据以及Hadoop相关概念介绍
    华为云文字识别关键技术和特别需要注意的事宜
    如何不用BPM配置时间
    华为云DevCloud为开发者提供高效智能的可信开发环境
    【HC资料合集】2019华为全联接大会主题资料一站式汇总,免费下载!
    在modelarts上部署mask-rcnn模型
    独立物理机和虚拟机比较有什么优势?
    解惑Python模块学习,该如何着手操作...
    sar命令,linux中最为全面的性能分析工具之一
  • 原文地址:https://www.cnblogs.com/lebronzhang/p/6142593.html
Copyright © 2011-2022 走看看