Lua语言_lua基本语法

Lua语言_lua基本语法1、Lua简介1.1Lua是什么1.2特性1.3应用场景2、Lua的安装3、入门程序4、Lua的基础语法4.1注释4.2定义变量4.3Lua中的数据类型4.4流程控制4.5循环4.6函数4.7表4.8模块1、Lua简介1.1Lua是什么Lua[1]是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(PontificalCatholicUniversityofRiodeJaneiro)里的一个由RobertoIerusalimschy、WaldemarCele.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1、Lua简介

1.1 Lua是什么

Lua [1] 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University ofRio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique deFigueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。 Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

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

1.2 特性

  • 支持面向过程(procedure-oriented)编程和函数式编程(functional programming);

  • 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;

  • 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;

  • 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

1.3 应用场景

  • 游戏开发
  • 独立应用脚本
  • Web 应用脚本
  • 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
  • 安全系统,如入侵检测系统
  • redis中嵌套调用实现类似事务的功能
  • web容器中应用处理一些过滤缓存等等的逻辑,例如nginx。

2、Lua的安装

有linux版本的安装也有mac版本的安装。。我们采用linux版本的安装,首先我们准备一个linux虚拟机。

安装步骤,在linux系统中执行下面的命令。

curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz

tar zxf lua-5.3.5.tar.gz

cd lua-5.3.5

make linux test

make install

Jetbrains全家桶1年46,售后保障稳定

注意:此时安装,有可能会出现如下错误:
在这里插入图片描述
此时需要安装lua相关依赖库的支持,执行如下命令即可:

yum -y install gcc gcc-c++ kernel-devel

此时再执行lua测试看lua是否安装成功

[root@localhost ~]# lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio

3、入门程序

创建hello.lua文件,内容为

vim hello.lua

在文件中输入:

print("hello");

保存并退出。
执行命令

lua hellp.lua

输出为:

Hello

效果如下:
在这里插入图片描述

4、Lua的基础语法

lua有交互式编程脚本式编程

交互式编程就是直接输入语法,就能执行。

脚本式编程需要编写脚本,然后再执行命令 执行脚本才可以。

一般采用脚本式编程。(例如:编写一个hello.lua的文件,输入文件内容,并执行lua hell.lua即可)

(1)交互式编程

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

lua -i

如下图:
在这里插入图片描述
(2)脚本式编程

我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,例如入门程序中将lua语法写到hello.lua文件中。

4.1 注释

一行注释:两个减号是单行注释

--

多行注释:

--[[
多行注释
多行注释
--]]

4.2 定义变量

全局变量,默认的情况下,定义一个变量都是全局变量,如果要用局部变量 需要声明为local.例如:

-- 全局变量赋值
a=1
-- 局部变量赋值
local b=2

如果变量没有初始化:则 它的值为nil 这和java中的null不同。

如下图案例:
在这里插入图片描述

4.3 Lua中的数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

在这里插入图片描述
实例:
在这里插入图片描述

4.4 流程控制

(1)if语句

Lua if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成。
语法:

if(布尔表达式)
then
--[ 在布尔表达式为 true 时执行的语句 --]
end

实例:
在这里插入图片描述

(2)if…else语句

Lua if 语句可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码块。
语法:

if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end

实例:
在这里插入图片描述

4.5 循环

(1)while循环[满足条件就循环 ]

Lua 编程语言中 while 循环语句在判断条件为 true 时会重复执行循环体语句。
语法:

while(condition)
do
statements
end

实例:

a=10
while( a < 20 )
do
print("a 的值为:", a)
a = a+1
end

执行效果
在这里插入图片描述

(2)for循环

Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。
语法: 1->10 1:exp1 10:exp2 2:exp3:递增的数量

for var=exp1,exp2,exp3
do
<执行体>
end

语法解释:var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 “执行体”。exp3 是可选的,如果不指定,默认为1。

例子:

for i=1,9,2
do
print(i)
end

for i=1,9,2 :i=1从1开始循环,9循环数据到9结束,2每次递增2
在这里插入图片描述

(3)repeat…until语句[满足条件结束]

Lua 编程语言中 repeat…until 循环语句不同于 for 和 while循环,for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。(与java语法中do…while类似)

语法:

repeat
	statements
until( condition )

案例:
在这里插入图片描述

4.6 函数

Lua中也可以定义函数,类似于java中的方法。例如:

--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)
	if (num1 > num2) then
		result = num1;
	else
		result = num2;
	end
	return result;
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))

执行之后的结果:

两值比较最大值为 10
两值比较最大值为 6

…:表示拼接

4.7 表

table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。

Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。

案例:

-- 初始化表
mytable = {}
-- 指定值
mytable[1]= "Lua"
-- 移除引用
mytable = nil

4.8 模块

(1)模块定义(类似于Java中方法的概念)
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。

创建一个文件叫module.lua,在module.lua中创建一个独立的模块,代码如下:

-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}
-- 定义一个常量
module.constant = "这是一个常量
-- 定义一个函数
function module.func1()
	print("这是一个公有函数")
end

local function func2()
	print("这是一个私有函数!")
end

function module.func3()
	func2()
end

return module

由上可知,模块的结构就是一个 table 的结构,因此可以像操作调用 table 里的元素那样来操作调用模块里的常量或函数。

上面的 func2 声明为程序块的局部变量,即表示一个私有函数,因此是不能从外部访问模块里的这个私有函数,必须通过模块里的公有函数来调用。

(2)require 函数

require 用于 引入其他的模块,类似于java中的类要引用别的类的效果。
用法:

require("<模块名>")
require "<模块名>"

两种都可以。

我们可以将上面定义的module模块引入使用,创建一个test_module.lua文件,代码如下:

-- test_module.lua 文件
-- module 模块为上文提到到 module.lua
require("module")

print(module.constant)

module.func3()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200708.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • adb 安装 apk bat脚本,支持多设备

    adb 安装 apk bat脚本,支持多设备以前就有着想法今天终于被我实现啦哈哈需要将adb和aapt路径添加到系统环境变量里面涉及到延迟变量还有有点难度,bat这种东西蛮强大就是没有一个完善的文档@echooff&color0d&setlocalenabledelayedexpansion titleAPK多设备安装工具echo.Apk多设备安装工具v1.0

  • python hashlib_Python hashlib模块实例使用详解

    python hashlib_Python hashlib模块实例使用详解这篇文章主要介绍了Pythonhashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下hashlib模块主要的作用:加密保护消息安全,常用的加密算法如MD5,SHA1等。1、查看可用的算法有哪些hashlib_algorithms.py#!/usr/bin/envpython#-*-coding:utf-8-*-i…

  • Shiro框架基本知识及应用「建议收藏」

    Shiro框架基本知识及应用「建议收藏」1.Shiro基本知识1.目前市面主流的安全框架:shiro:轻量级的,使用很方便,灵活,是apache提供的,在任何框架的SpringSecurity:是Spring家族的一部分,很多项目中会使用spring全家桶,相对与shiro来说,springSecurity更重量级,必须要求spring环境;相对shiro而言,功能更强大2.什么是Shiro?Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功

  • yourphp常用标签

    yourphp常用标签

  • __builtin_offsetof()[通俗易懂]

    __builtin_offsetof()[通俗易懂]————-linuxcompiler-gcc4.h————–#define__compiler_offsetof(a,b)__builtin_offsetof(a,b)分析准备:__compiler_offsetof(),为gcc编译器中的编译方面的参数,查阅gcc方面的文档:—>gcc.pdf.Downloadfromwww.gn

  • TCP/IP具体解释–TCP/UDP优化设置总结&amp; MTU的相关介绍「建议收藏」

    TCP/IP具体解释–TCP/UDP优化设置总结&amp; MTU的相关介绍

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号