zoukankan      html  css  js  c++  java
  • Lua(五)

    一 、简介

    Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

    Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。

    二、设计目的

    其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

    三、特性

    • 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
    • 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
    • 其它特性:
      • 支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
      • 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
      • 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
      • 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

    四、应用场景

    • 游戏开发
    • 独立应用脚本
    • Web 应用脚本
    • 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
    • 安全系统,如入侵检测系统

    五、安装

    安装命令如下:

    curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz 
    tar xf lua-5.3.5.tar.gz 
    cd lua-5.3.5 
    make linux test

    我报了下面的错

    这个错是因为缺少readline相关的库才导致的,遂安装libreadline-dev ,安装命令如下:

    yum install readline-devel

    然后再重新执行命令,出现下面页面就成功了

    版本查看: lua -v

    我发现我的版本已经是最新不用换了,在官网有说明如果Lua版本还是原来系统自带的版本,需要替换原来系统自带的lua,执行如下命令:

    rm -rf /usr/bin/lua
    ln -s /usr/local/gupao/lua-5.3.5/src/lua /usr/bin/lua

    六、Lua常用操作

    教程网址:https://www.runoob.com/lua/lua-basic-syntax.html

    Lua 提供了交互式编程模式。可以在命令行中输入程序并立即查看效果,这种编程模式类似我们控制台操作,Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:
    lua -i 

    Lua 数据类型

    Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

     

    Lua 变量

    变量在使用前,需要在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。

    例子:

    -- test.lua 文件脚本
    a = 5               -- 全局变量
    local b = 5         -- 局部变量
    
    function joke()
        c = 5           -- 全局变量
        local d = 6     -- 局部变量
    end
    
    joke()
    print(c,d)          --> 5 nil
    
    do
        local a = 6     -- 局部变量
        b = 6           -- 对局部变量重新赋值
        print(a,b);     --> 6 6
    end
    
    print(a,b)      --> 5 6

     七、脚本编程

    上面我只简单的操作几个,在菜鸟教程里面有很多操作命令方法,如果有兴趣可以自己进去看,Lua其实可以和java样将命令写到一个文件中,并且可以在一个脚本文件引入另一个脚本文件,可以理解成java中的导包,接下来就是要玩这个功能;进入我自己创建的lua目录

     然后在这个目录中编辑一个文件叫course.lua

     内容如下

    --定义一个对象 
    local course = {} 
    --定义一个方法 
    function course.courseName(id) 
    if id==1 then 
          return "1"
    else 
         return "2" 
    end 
    end 
    return course

     接着再来创建一个名字叫transcript.lua


    [root@iZwz9fiurnr72olcv1lnmjZ lua]# vi course.lua

    --导入course.lua 
    local cr = require("course") 
    --调用courseName方法 
    local result = cr.courseName(1) 
    print(result)

    执行 course.lua : 用命令
    lua transcript.lua

     
    这短短的一生我们最终都会失去,不妨大胆一点,爱一个人,攀一座山,追一个梦
  • 相关阅读:
    MethodNotAllowedHttpException
    laravel项目return back()->withErrors($validator)或return back()->with('errors','原密码错误!')在前台原密码错误的情况下不能正确显示错误信息,变成报错!
    laravel加入验证码类几种方法 && Laravel引入第三方库的方法
    使用Git命令从Github下载代码仓库
    4-ESP8266 SDK开发基础入门篇--串口
    2-STM32+W5500+GPRS物联网开发基础篇-基础篇学习的内容
    3-ESP8266 SDK开发基础入门篇--点亮一个灯
    2-ESP8266 SDK开发基础入门篇--非RTOS版与RTOS版
    1-ESP8266 SDK开发基础入门篇--开发环境搭建
    11-网页,网站,微信公众号基础入门(配置自己的微信公众号,添加一个按钮)
  • 原文地址:https://www.cnblogs.com/xing1/p/14938710.html
Copyright © 2011-2022 走看看