Lua 教程

Lua 教程

(今天又又又开新坑啦)

Lua 教程

手册简介

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

手册说明

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

相关推荐
程序猿乐锅12 分钟前
【MySQL | 第八篇】MySQL 视图
数据库·mysql
IP老炮不瞎唠13 分钟前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
bIo7lyA8v17 分钟前
算法复杂度评估的实验统计方法与可视化的技术8
算法
李老师讲编程38 分钟前
中国电子学会图形化2020.12月Scratch三级考级题
算法·scratch·信息学奥赛·图形化编程·scratch素材
睡不醒男孩0308231 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
退休倒计时1 小时前
【每日一题】LeetCode 53. 最大子数组和 TypeScript
数据结构·算法·leetcode·typescript
dog2501 小时前
网络长尾延时的重尾本质
开发语言·网络·php
旖-旎1 小时前
FloodFill(图像渲染)(1)
c++·算法·深度优先·力扣
jieyucx1 小时前
SQL 查询终极高阶通鉴:从零基础拆解到工业级多表联查、窗口函数与索引优化
数据库·sql