当前位置: 首页 > article >正文

一、Lua基础

文章目录

  • 一、Lua是什么
  • 二、Lua特性
    • (一)轻量级
    • (二)可扩展
    • (三)其它特性
  • 三、Lua安装
  • 四、Lua应用

看到评论说,C++让我见识了语言的严谨与缜密,lua让我见识到了语言的精巧与创新,希望我也可以学习到。
2023.11.26

一、Lua是什么

Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。
Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。 [2] Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
一个完整的Lua解释器不过200k,在所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择!

在这里插入图片描述

二、Lua特性

lua特性:
轻量级,可扩展,支持面向过程(procedure-oriented)编程和函数式编程(functional programming);

(一)轻量级

Lua语言的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快,从而适合嵌入在别的程序里。5.0.2版的Lua的内核小于120KB,而Python的内核大约860KB,Perl的内核大约1.1MB。

(二)可扩展

Lua并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。

(三)其它特性

Lua还具有其它一些特性:同时支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;
闭包(closure);函数也可以看做一个值;提供多线程(协同进程 ,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

三、Lua安装

Github 下载地址:https://github.com/rjpcomputing
直接在官网也可以, tar -zxvf lua-5.4.6.tar.gz -C lua
安装后在linux环境下,make linux

四、Lua应用

  • 游戏开发-用来做热更
  • 独立软件 Photoshop
  • WEB 开发
  • WEB 服务器中间件 nginx 支持扩展,1ua 写个扩展
  • 数据库操作脚本
  • 缓存操作脚本 redis
  • 秒杀,用lua 把一个非原子操作变成一个原子操作

http://www.kler.cn/a/148663.html

相关文章:

  • MyBatisPlus 用法详解
  • 【go从零单排】Timer、Epoch 时间函数
  • gdb编译教程(支持linux下X86和ARM架构)
  • 第三十六章 Vue之路由重定向/404页面设置/路径模式设置
  • Linux设置Nginx开机启动
  • Python网络爬虫与数据采集实战——什么是网络爬虫
  • 【C++ 程序设计入门基础】- 第3节-循环结构01
  • Linux配置路由功能及添加静态路由
  • 免费查找文献期刊数据论文网站
  • 【Qt之QTextDocument】使用及表格显示富文本解决方案
  • 基于STC12C5A60S2系列1T 8051单片机的IIC总线器件24C02记录单片机上电次数应用
  • kubectl rollout 实现金丝雀发布的流量控制策略
  • 经典滑动窗口试题(二)
  • 【LeetCode刷题-链表】--86.分隔链表
  • LLM、ChatGPT与多模态必读论文150篇
  • 使用opencv将sRGB格式的图片转换为Adobe-RGB格式【sRGB】【Adobe-RGB】
  • 数据挖掘 朴素贝叶斯
  • tp6框架 万级数据入库 php函数优化
  • 如何解决 Java 中的 IllegalArgumentException 异常?
  • Windows10系统卸载服务和删除服务
  • 使用STM32 HAL库驱动光电传感器的设计和优化
  • Python算法——Merkle树
  • 09-详解JSR303规范及其对应的校验框架的使用
  • Python与设计模式--中介者模式
  • 国家对于新消费新经济有哪些新旨意?
  • VScode集成python开发环境和基本插件下载配置