02 Lua 基本语法

简介: Lua 体积小、启动速度快,一个完整的 Lua 解释器不过200k,在所有脚本引擎中,Lua 的速度可以说是最快的。所以 Lua 是作为嵌入式脚本的最佳选择。
我是陈皮,一个在互联网 Coding 的 ITer,个人微信公众号「陈皮的JavaLib」关注第一时间阅读最新技术文章。

1 基本语法

Lua 提供了交互式编程模式,即可以直接在命令行中输入程序并立即查看效果。使用 lua -i 命令可以打开交互窗口。以下演示打开交互窗口,并使用打印语句输出内容。

[root@chenpihost lua-5.4.3]# lua -i
Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio
> print("Hello 陈皮的JavaLib !")
Hello 陈皮的JavaLib !
> 

也可以将 Lua 程序代码保存到一个以 lua 结尾的文件中,并执行,即脚本式编程。

-- 以下内容存储在chenpi.lua文件中
print("Hello 陈皮的JavaLib !")
print("Hello Lua!")

然后使用 lua 命令执行以上文件。

[root@chenpihost lua-5.4.3]# lua chenpi.lua 
Hello 陈皮的JavaLib !
Hello Lua!

当然也可以将 Lua 脚本作为一个可执行文件来执行,第一行说明用什么解释器来执行,Lua 脚本内容如下:

#!/usr/local/bin/lua
print("Hello 陈皮的JavaLib")

然后赋予文件可执行权限,然后执行。

[root@chenpihost lua-5.4.3]# chmod +x chenpi.lua
[root@chenpihost lua-5.4.3]# ./chenpi.lua 
Hello 陈皮的JavaLib

2 注释

Lua 中有两种注释,单行注释和多行注释。

-- 两个减号是单行注释


--[[
这是多行注释
这是多行注释
...
--]]

3 标识符

Lua 标识符由大小写字母下划线数字组成,并且只能以字母和下划线开始,区分大小写。标识符就是我们平常定义的变量名或者函数名。Lua 中的关键字不能用作变量名或函数名。

-- 以下都是合法的标识符
chenpi
ChenPi
chenpi23a
_lua

-- 以下都不是合法的标识符
1_chenpi
chenpi%aa
break

4 变量

Lua 中的变量可分为全局变量局部变量,使用local关键字定义的变量为局部变量,反之则为全局变量。

新建一个 Lua 脚本文件 chenpi.lua ,然后输入以下内容。

name = "chenpi" -- 全局变量

function func()
    age = 12 -- 全局变量
    local i = "ok" -- 局部变量
    print(i)
end

func()
print(name)
print(age)
print(i)

使用lua chenpi.lua命令进行编译运行,输出结果如下:

[root@chenpihost lua-5.4.3]# lua chenpi.lua 
ok
chenpi
12
nil

以上例子 name 和 age 是全局变量,i 是局部变量,所以在函数外面打印 i 的值为 nil。其实 age 这个全局变量是在函数内定义的,所以在函数外部对 age 的引用要后于对函数的调用才可以,不然也是输出 nil。

name = "chenpi" -- 全局变量

function func()
    age = 12 -- 全局变量
    local i = "ok" -- 局部变量
    print(i)
end

print(name)
print(age)
print(i)
func()

执行脚本文件输出结果如下:

[root@chenpihost lua-5.4.3]# lua chenpi.lua 
chenpi
nil
nil
ok

对于变量要先定义,后使用,不然直接引用一个还未定义的变量,它的值为 nil。

print(name) -- nil

name = "chenpi"

print(name) -- chenpi

print(age) -- nil

定义好的变量可以重新定义。

name = "chenpi"
print(name)  -- chenpi

local name = "local chenpi"
print(name)  -- local chenpi

name = 12.0
print(name)  -- 12.0

可以同时定义相名的全局变量和局部变量。

function func()
    name = "chenpi"
    local name = "local chenpi"
    print(name)
end

func()      -- local chenpi
print(name) -- chenpi

5 关键字

if elseif else do end
break and or not in
true false function local repeat
while then return for until
nil

本次分享到此结束啦~~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,您的支持就是我创作最大的动力!

相关文章
|
4月前
|
Java API C语言
Lua语法(一)
Lua语法(一)
73 0
Lua语法(一)
|
4月前
Lua语法(六)——面相对象编程
Lua语法(六)——面相对象编程
35 0
|
4月前
|
Java
Lua语法(五)——垃圾回收
Lua语法(五)——垃圾回收
114 0
|
4月前
Lua语法(四)——协程
Lua语法(四)——协程
58 0
|
4月前
|
索引
Lua语法(三)——元表与元方法
Lua语法(三)——元表与元方法
50 0
|
4月前
|
缓存
Lua语法(二)——闭包/日期和时间
Lua语法(二)——闭包/日期和时间
94 0
|
6月前
|
存储 缓存 NoSQL
Redis系列学习文章分享---第十三篇(Redis多级缓存--JVM进程缓存+Lua语法)
Redis系列学习文章分享---第十三篇(Redis多级缓存--JVM进程缓存+Lua语法)
84 1
|
7月前
|
NoSQL JavaScript Java
Lua开发环境搭建和基础语法
Lua开发环境搭建和基础语法
154 1
|
7月前
|
Java Kotlin 索引
Lua 起航 —— 一些常用基础语法
Lua 起航 —— 一些常用基础语法
76 1
|
存储
Lua基本语法
Lua基本语法