Lua安装和基本语法

Lua

lua的安装

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

如果出现错误需要安装lua相关依赖库的支持

在这里插入图片描述

yum install libtermcap-devel ncurses-deve1 libevent-deve1 readline-deve1

测试lua是否安装成功

lua

入门程序

创建一个hello.lua文件

vi hello.lua

在这里插入图片描述

执行lua程序

lua hello.lua

在这里插入图片描述

在这里插入图片描述

还可以进入Lua控制台去执行

lua 或 lua -i 都是可以的

在这里插入图片描述

编程模式

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

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

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

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

1、交互式编程

Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。

Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:

lua -i

如下图:

在这里插入图片描述

2、脚本式编程

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

lua的基本语法

注解

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

--

多行注释

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

定义变量

默认是全局变量

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

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

在这里插入图片描述

Lua中的数据类型

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

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

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)
boolean包含两个值:false和true
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示。
userdata表示任意存储在变量中的C数据结构
function由 C 或 Lua 编写的函数
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实就是一个“关联数组” (associative arrays),数组的索引可以是数字、字符串货表类型。在 Lua 里, table 的创建是通过“构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。

实例:

print(type("Hello world"))      --> string
print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean
print(type(nil))                --> nil

type:函数,输出对象的类型

流程控制

(1)if语句

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

语法:

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

实例:

在这里插入图片描述

(2)if…else语句

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

语法:

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

实例:

在这里插入图片描述

循环

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

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

语法:

while(codition)
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

实例:

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

在这里插入图片描述

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

Lua 编程语言中 repeat…until 循环语句不同于 for 和 while 循环,for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句是在当前循环结束后判断

语法:

repeat
    statements
until(condition)

实例:

在这里插入图片描述

函数

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

--[[ 函数返回两个值的最大值 --]]
function max(num1,num2)
    if(num1>num2)
    then
        result=num1
    else
        result=num2
    end
    return result
end
-- 调用函数
print(max(11,19))

在这里插入图片描述

… :表示拼接

在这里插入图片描述

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

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

实例:

-- 初始化表
mytable = {}

-- 指定值
mytable[1] = "Lua"

-- 移除引用
mytable = nil

在这里插入图片描述

模块

(1)模块定义

模块类似于一个封装库,从 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 声明为程序块的局部变量,即表示一个私有函数,因此是不能从外部访问模块里的这个私有函数,必须通过模块里的公有函数来调用.

定义一个module.lua

在这里插入图片描述

(2)require 函数

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

用法:

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

使用上面这两种都可以

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

定义一个text_module.lua去调用module.lua

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

print(module.constant)

module.func1()
module.func3()

在这里插入图片描述

输出结果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是鱼染哟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值