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

Lua 教程

Lua 教程

(今天又又又开新坑啦)

Lua 教程

Lua 教程

手册简介

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放。

手册说明

201610261548235801

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等文件格式,并且更容易理解和维护. Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

目标

Lua的目标是成为一个很容易嵌入其它语言中使用的语言。大多数程序员也认为它的确做到了这一点。

特性

轻量级

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

可扩展

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

其它特性

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

Lua 应用场景

游戏开发

独立应用脚本

Web 应用脚本

扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench

安全系统,如入侵检测系统

使用Lua的项目

Minecraft中的电脑模组(ComputerCraft)

所有的为电脑和turtle(机器人)的代码都是基于Lua的,你可以用它们与有(无)线路由器、打印机、磁盘驱动器、显示器互动。

Adobe Photoshop Lightroom

Lightroom是Adobe公司的一款摄影后期制作软件,最开始的版本由Shadowland代码编写,后期版本部分使用Lua实现,Lua代码占到代码总量的63%。

金庸群侠传lua复刻版

这个游戏,游戏迷们想必都玩过了。牛人用lua脚本重新弄了下。

魔兽世界

他的插件用的也是lua。

仙剑奇侠传五

解压游戏到资源目录可以看到游戏到脚本全部是使用Lua语言编写的。

Garry's Mod

这个游戏的所有创意工坊插件都是由LUA脚本编写的。

Lua相关地址

官网:

The Programming Language Lua

API文档:

Lua: documentation

教程:

http://www.w3cschool.cn/lua/lua-tutorial.html

下载:

Lua: download

相关文章:

  • 3 scala集合-Set
  • Hive3.1.2——企业级调优
  • 如何用 npm 运行本地 js 文件
  • 山脉的个数/攀登者
  • 二叉树-------前,中,后序遍历 + 前,中,后序查找+删除节点 (java详解)
  • Stream流学习笔记
  • openJudge | 过滤多余的空格 C语言
  • Leetcode29:两数相除
  • 【python之美】减少人工成本之批量拿取文件名保存_4
  • Rust的Match语句:强大的控制流运算符
  • Gin 中使用 base64Captcha 生成图形验证码
  • flask+python高校学生综合测评管理系统 phl8b
  • 1.JavaScript中的数据类型
  • 小白学习Halcon100例:如何利用动态阈值分割图像进行PCB印刷缺陷检测?
  • DolphinScheduler安装与配置
  • Bytom交易说明(账户管理模式)
  • Effective Java 笔记(一)
  • es6要点
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • HTTP请求重发
  • IndexedDB
  • Just for fun——迅速写完快速排序
  • Odoo domain写法及运用
  • quasar-framework cnodejs社区
  • SpringBoot 实战 (三) | 配置文件详解
  • vue.js框架原理浅析
  • vue-cli3搭建项目
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信支付JSAPI,实测!终极方案
  • 自动记录MySQL慢查询快照脚本
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • $.ajax,axios,fetch三种ajax请求的区别
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (六)Hibernate的二级缓存
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .gitignore文件---让git自动忽略指定文件
  • .NET delegate 委托 、 Event 事件
  • .NET6 命令行启动及发布单个Exe文件
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET建议使用的大小写命名原则
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .Net语言中的StringBuilder:入门到精通
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @Resource和@Autowired的区别
  • [Android] Android ActivityManager
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [codeforces] 25E Test || hash
  • [codevs1288] 埃及分数
  • [FZSZOJ 1223] 上海红茶馆
  • [hdu 3065] 病毒侵袭持续中 [AC自动机] [病毒特征码匹配]