【Lua学习】Lua最最基础的

news2024/11/16 2:50:39

Lua是什么?

Lua是一种强大、高效、轻量级、可嵌入的脚本语言。它支持过程式编程、面向对象编程、函数式编程、数据驱动编程和数据描述。
Lua将简单的过程式语法与基于关联数组和可扩展语义的强大数据描述构造相结合。Lua是动态类型的,通过基于寄存器的虚拟机解释字节码来运行,并具有自动内存管理功能,通过增量垃圾收集,使其成为配置、脚本编写和快速原型设计的理想选择。

Lua来自于哪里?

Lua是由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro,简称PUC-Rio)的一个团队设计、实现和维护的。Lua诞生并成长于Tecgraf,这是PUC-Rio的前计算机图形技术小组。现在,Lua位于PUC-Rio计算机科学系的一个实验室——LabLua。

关于名字

"Lua"(发音为LOO-ah)在葡萄牙语中意为“月亮”。因此,它既不是缩写词也不是缩写,而是一个名词。更具体地说,“Lua”是一个名字,地球卫星的名字以及这种语言的名字。像大多数名字一样,它应该以小写字母书写,首字母大写,即“Lua”。请不要将其写成“LUA”,这既难看又容易混淆,因为这样它就变成了一个缩写词,对不同的人来说有不同的含义。所以,请正确地书写“Lua”吧!

为什么选择Lua?

Lua是一种经过验证的、健壮的语言

Lua已在许多工业应用中得到使用(例如,Adobe的Photoshop Lightroom),特别强调嵌入式系统(例如,巴西数字电视的Ginga中间件)和游戏(例如,魔兽世界和愤怒的小鸟)。目前,Lua是游戏领域领先的脚本语言。Lua有一个扎实的参考手册,并且有关于它的多本书籍。自1993年创建以来,Lua的多个版本已经发布并在实际应用中使用。Lua在2007年的HOPL III,即第三届ACM SIGPLAN编程语言历史会议上有所展示。Lua在2011年获得了游戏开发者杂志的前线奖。

Lua速度快

Lua以其性能而闻名。声称“与Lua一样快”是其他脚本语言的目标。多个基准测试显示,Lua在解释型脚本语言领域中是最快的。Lua不仅在精细调整的基准程序中快,在现实生活中也很快。大型应用的很大一部分都是用Lua编写的。
如果您需要更快的速度,可以尝试LuaJIT,这是一个使用即时编译器的Lua独立实现。

Lua可移植

Lua以一个小型包的形式分发,并在所有拥有标准C编译器的平台上直接构建。Lua运行在所有Unix和Windows版本上,移动设备(运行Android、iOS、BREW、Symbian、Windows Phone),嵌入式微处理器(如ARM和Rabbit,用于Lego MindStorms等应用),IBM大型机等。
关于Lua为什么也是受限设备的好选择的具体原因,请阅读Mike Pall的总结。也可以看看Timm Müller创建的海报。

Lua可嵌入

Lua是一个快速的语言引擎,占用空间小,可以轻松嵌入到您的应用程序中。Lua有一个简单且文档齐全的API,允许与其他语言编写的代码进行强集成。用其他语言编写的库很容易扩展Lua。用其他语言编写的程序也很容易用Lua扩展。Lua不仅用于扩展用C和C++编写的程序,还用于Java、C#、Smalltalk、Fortran、Ada、Erlang,甚至其他脚本语言,如Perl和Ruby。

Lua功能强大(但简单)

Lua设计中的一个基本概念是提供元机制来实现特性,而不是直接在语言中提供大量特性。例如,尽管Lua不是一种纯面向对象的编程语言,但它确实提供了实现类和继承的元机制。Lua的元机制带来了概念的经济性,保持了语言的小巧,同时允许以非常规方式扩展语义。

Lua小巧

将Lua添加到应用程序中不会使其膨胀,这也为安全性做出了贡献。Lua 5.4.7的tar包,包含源代码和文档,压缩后占用365K,解压缩后占用1.3M。源代码大约包含31000行C代码。在64位Linux下,包含所有标准Lua库的Lua解释器占用279K,Lua库占用464K。

Lua是免费的

Lua是免费的开放源代码软件,根据非常宽松的许可证(著名的MIT许可证)分发。它可以用于任何目的,包括商业目的,而且绝对不收取任何费用。只需下载并使用它。

Lua在linux上的安装

Bash

curl -L -R -O https://www.lua.org/ftp/lua-5.4.7.tar.gz
tar zxf lua-5.4.7.tar.gz
cd lua-5.4.7
make all test

Lua在windows上的安装

1.下载gcc编译器

TDM-GCC 型 (jmeubank.github.io)

2.下载Lua源代码

https://lua.org/ftp/lua-5.4.7.tar.gz

3.解压缩Lua源码

我放到了这里:C:\lua-5.4.7

4.编写build.bat,复制下面的代码,粘贴到build.bat中

@echo off
        :: ========================
        :: file build.cmd
        :: ========================
        setlocal
        :: you may change the following variable's value
        :: to suit the downloaded version
        set lua_version=5.4.7

        set work_dir=%~dp0
        :: Removes trailing backslash
        :: to enhance readability in the following steps
        set work_dir=%work_dir:~0,-1%
        set lua_install_dir=%work_dir%\lua
        set compiler_bin_dir=%work_dir%\tdm-gcc\bin
        set lua_build_dir=%work_dir%\lua-%lua_version%
        set path=%compiler_bin_dir%;%path%

        cd /D %lua_build_dir%
        mingw32-make PLAT=mingw

        echo.
        echo **** COMPILATION TERMINATED ****
        echo.
        echo **** BUILDING BINARY DISTRIBUTION ****
        echo.

        :: create a clean "binary" installation
        mkdir %lua_install_dir%
        mkdir %lua_install_dir%\doc
        mkdir %lua_install_dir%\bin
        mkdir %lua_install_dir%\include

        copy %lua_build_dir%\doc\*.* %lua_install_dir%\doc\*.*
        copy %lua_build_dir%\src\*.exe %lua_install_dir%\bin\*.*
        copy %lua_build_dir%\src\*.dll %lua_install_dir%\bin\*.*
        copy %lua_build_dir%\src\luaconf.h %lua_install_dir%\include\*.*
        copy %lua_build_dir%\src\lua.h %lua_install_dir%\include\*.*
        copy %lua_build_dir%\src\lualib.h %lua_install_dir%\include\*.*
        copy %lua_build_dir%\src\lauxlib.h %lua_install_dir%\include\*.*
        copy %lua_build_dir%\src\lua.hpp %lua_install_dir%\include\*.*

        echo.
        echo **** BINARY DISTRIBUTION BUILT ****
        echo.

        %lua_install_dir%\bin\lua.exe -e"print [[Hello!]];print[[Simple Lua test successful!!!]]"

        echo.

        pause

5.将builld.bat放到lua-5.4.7同级目录内

要注意,lua-5.4.7文件夹内部,是doc,src,Makefile和README.txt

6.双击运行build.bat

等待结束。会在同级目录生成lua文件夹

在命令行窗口显示如下

说明安装成功。

7.设置环境变量

环境变量->系统变量->Path,在里面输入上面生成的lua文件夹下的bin路径。

我是把lua文件夹放在了C:\Program Files\lua,因此我在环境变量Path中填写了C:\Program Files\lua\bin

8.打开shell或cmd窗口,输入lua

在cmd或shell窗口,输入lua,会进入lua交互模式,此时可以执行lua命令了。

Lua相关网站

Lua官网:The Programming Language Lua

Lua官方网站,可以下载最新版Lua。截止到今天,Lua最新版本为5.4.7。里面包含有Lua使用手册、源码、工具等各种内容。

Lua包管理器LuaRocks:LuaRocks - Lua 包管理器

LuaRocks是Lua模块的包管理器。它允许您创建和安装Lua模块作为名为rocks的自包含包。您可以在Unix和Windows上下载和安装LuaRocks。LuaRocks是免费软件,并使用与Lua相同的许可证。

Lua游戏引擎love2d:LÖVE - Free 2D Game Engine (love2d.org)

LÖVE是一个 非常棒 的框架,您可以使用它用Lua制作2D游戏。它是免费的、开源的,并且在Windows、macOS、Linux、Android和iOS上都可以使用。

Lua游戏引擎love3d:Love3D - LOVE (love2d.org)

Löve3D引擎(从g3d分支而来)简化了LÖVE的2D功能,以便3D游戏尽可能简单易用。我们建议使用Blender(开源软件)来构建在Löve3D游戏中使用的3D模型。

Löve3D与Löve2D源代码完全兼容。您可以将Löve2D的代码片段添加到Löve3D中,而不会出现任何工作问题。

Lua游戏引擎corona:Corona: Free Cross-Platform 2D Game Engine (coronalabs.com)

Corona是一个免费、跨平台的框架,非常适合为移动设备和桌面系统创建游戏和应用。使用强大但易于学习的Lua脚本语言,超过1000个内置API,大量的插件选择,以及Corona Native扩展(C/C++/Obj-C/Java),您可以实现您的应用梦想。您甚至可以使用Live Builds在多个设备上即时监控项目。这些功能以及更多都是Corona生态系统的一部分!

tolua:topameng/tolua

tolua# 是一个Unity的Lua静态绑定解决方案。这是第一个通过反射分析代码并生成包装类的解决方案。 它是一个Unity插件,极大地简化了C#代码与Lua的集成。它可以自动生成绑定代码,以便从Lua访问Unity,并将C#的常量、变量、函数、属性、类和枚举映射到Lua。 tolua# 是从cstolua发展而来的。它的目标是成为一个强大的Unity开发环境。 支持Unity4.6.x和Unity5.x所有版本(复制/Unity5.x/Assets到/Assets)

xLua:Tencent/xLua: xLua

腾讯推出的xLua 为 Unity、.Net、Mono 等 C# 环境增加 Lua 脚本编程的能力,借助 xLua,这些 Lua 代码可以方便的和 C# 相互调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ IO流全解析:标准库中的数据处理与文件读写艺术

🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 一: 🔥 C语言的输入与输出 二: 🔥 流是什么 三: 🔥 CIO流🚀 3.1 C标准IO流🚀 ist…

<<编码>> 第 10 章 逻辑与开关(Logic and Switches) 示例电路

串联电路 info::操作说明 鼠标单击开关切换开合状态 需要两个开关同时闭合才能接通电路 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch10-01-series-circuit.txt 并联电路 in…

windows下 MySQL8.4.2 LTS 解压版的安装使用

目录 一、下载二、解压三、创建 my.ini 文件四、安装 一、下载 下载地址:https://dev.mysql.com/downloads/mysql/ 二、解压 将下载包解压到 D 盘: 三、创建 my.ini 文件 D:\mysql-8.4.2-winx64 目录下创建 my.ini 文件: [mysql] # …

前端Vue框架实现html页面输出pdf(html2canvas,jspdf)

代码demo&#xff1a; <template><el-dialog class"storageExportDialog" :fullscreen"true" title"" :visible.sync"visible" v-if"visible" width"600px"><div id"exportContainer" …

第二期: 第一节 环境的搭建

1 找一个虚拟机。 下载工具链&#xff0c; 源码。 可以看到这个压缩包里&#xff0c;有 uboot kernel 工具链 &#xff0c;都有了。 将工具链 拷贝到 /usr/local/arm 目录下。 更改 .bashrc 2 先编译一遍&#xff0c;确定环境没问题。 压缩包里 有一个 uboot , kernle 一起…

unity3d入门教程二

unity3d入门教程二 5.1游戏对象5.2对象的显示顺序5.3对象的轴心5.4对象的父子关系6.1图片素材的准备6.2图片的切割6.3图片与渲染器7.1组件7.2transform组件 5.1游戏对象 游戏制作是在编辑器中进行的 游戏脚本是进行控制对象移动的 5.2对象的显示顺序 方法1&#xff1a;调整 Or…

【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接

【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接 等值连接&#xff08;Equijoin&#xff09; vs 非等值连接&#xff08;Non-equijoin&#xff09;等值连接&#xff08;Equijoin&#xff09;非等值连接&#xff08;Non-equijoin&#xff09; 自连接&#xff08;…

常见的ROM(只读存储器)及其区别(超详细)

目录 1. 掩模 ROM (Mask ROM) 2. 可编程 ROM (Programmable ROM, PROM) 3. 可擦写可编程 ROM (Erasable Programmable ROM, EPROM) 4. 电可擦写可编程 ROM (Electrically Erasable Programmable ROM, EEPROM) 5. 闪存 (Flash Memory) 6. NVRAM (Non-Volatile RAM) 各类 ROM 的主…

CTF—杂项题目

1.ctfshow-Misc入门-misc17 1 用010editer打开图片后没有直接搜到ctf&#xff1b; 2 用binwalk分析文件发现有一个bzip2的隐藏文件并将其分离&#xff1b; 3 得到一个压缩文件D86.bz2&#xff1b; 4 但使用解压命令进行解压时&#xff0c;显示文件受损&#xff1b; 5 参考别人…

gbase8s之onlog相关文章

原因&#xff1a;总是在工作中会遇到抬杠的研发说insert没入库&#xff0c;特此写一篇onlog相关的文章 语法如下&#xff1a; onlog -l -d /data2/logbackup/gbase-0003_0_Log0000002093 --获取普通表的partnum: select ltrim(lower(hex(partnum)),0x) partnum from systabl…

数模方法论-整数规划

一、基本概念 整数规划是一种特殊的线性规划&#xff0c;其中某些或所有决策变量必须是整数。线性规划的概念可以阅读下面文章&#xff1a; 数模方法论-线性规划-CSDN博客https://blog.csdn.net/qq_41489047/article/details/142134282 这种方法用于解决那些要求解变…

[数据集][目标检测]高铁受电弓检测数据集VOC+YOLO格式1245张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1245 标注数量(xml文件个数)&#xff1a;1245 标注数量(txt文件个数)&#xff1a;1245 标注…

YoloV10改进策略:上采样改进|动态上采样|轻量高效,即插即用(适用于分类、分割、检测等多种场景)

摘要 本文使用动态上采样改进YoloV10&#xff0c;动态上采样是今天最新的上采样改进方法&#xff0c;具有轻量高效的特点&#xff0c;经过验证&#xff0c;在多个场景上均有大幅度的涨点&#xff0c;而且改进方法简单&#xff0c;即插即用&#xff01; 论文&#xff1a;《DySa…

【第30章】Spring Cloud之Sentinel动态规则扩展

文章目录 前言一、规则管理及推送二、DataSource 扩展1. 引入依赖2. 规则文件3. 定义数据源信息 三、服务定义和测试1. 服务定义2. 并发测试3. 控制台查看规则 总结 前言 之前我们定义的流控和熔断规则应用每次重启之后就丢失了&#xff0c;是因为在控制定义规则这些规则仅在内…

Dotnet Publish 报错 - the process cannot access the file

Dotnet Publish 报错 - the process cannot access the file 问题描述&#xff1a; 我在使用自动化部署工具 Jenkins 时&#xff0c;遇到需要使用 dotnet publish 命令来发布.net core 项目时&#xff0c;报错了&#xff1a; The process cannot access the file because it …

若依RuoYi脚手架二次开发教程(二次开发必学技能)

文章目录 一、若依框架修改器二、新建业务模块1、在新模块中导入核心模块依赖2、父工程版本锁定3、添加新模块依赖 三、菜品管理&#xff08;主子表&#xff09;1、准备SQL并导入数据库2、配置代码生成信息3、下载代码并导入项目4、页面功能测试5、功能完善与升级改造6、页面调…

I.MX6U裸机-汇编LED灯实验

汇编基础语法参考&#xff1a;初识汇编语言-CSDN博客 本文主要参考正点原子《I.MX6U 嵌入式 Linux 驱动开发指南 》第八章 STM32 GPIO 回顾 我们一般拿到一款全新的芯片&#xff0c;第一个要做的事情的就是驱动其 GPIO&#xff0c;控制其 GPIO 输出高低电平&#xff0c;我们学习…

Python复制数组并增加一个维度

二维数组扩增到三维数组 在处理nc文件过程中&#xff0c;读取的数据如果是多个时间点的数据&#xff0c;比如绿海模式的数据&#xff0c;它的格点的维度除了经纬度还有时间和高度。在进行格点数据插值到站点数据时&#xff0c;为了保持维度一致&#xff0c;也构造一个相同维度的…

【CSS in Depth 2 精译_029】5.2 Grid 网格布局中的网格结构剖析(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

opencv之Canny边缘检测

文章目录 前言1.应用高斯滤波去除图像噪声2.计算梯度3.非极大值抑制4.应用双阈值确定边缘5.Canny函数及使用 前言 Canny边缘检测是一种流行的边缘检测算法&#xff0c;用于检测图像中的边缘。它通过一系列步骤将图像中的像素边缘突出显示出来&#xff0c;主要分为以下几个步骤…