【Lua学习】Lua入门
上一篇帖子【Lua学习】Lua最最基础的 – 经云的清净小站 (skycreator.top)讲了Lua是什么,Lua如何安装在Linux和Windows上。那么安装好之后,我们就要使用Lua实现我们的各种功能了。
首先,我们要先了解Lua一些最基本的内容,比如怎么执行Lua脚本?
执行Lua脚本
安装好Lua后,打开Linux的终端,或者Windows的PowerShell(也可以是cmd),可以使用
lua [Lua脚本名.lua] 来运行一个Lua脚本。例如:
lua helloworld.lua
helloworld.lua内容很简单,就是输出helloworld这个字符串。
print("Hello World!")
结果如下:
交互模式
Lua交互模式有两种方式进入。
1.终端直接输入lua
如上图所示,输入lua后,会在终端打印一行信息
Lua 5.4.3 Copyright (C) 1994 – 2021 Lua.org, PUC-Rio
说明这是Lua的5.4.3版本,第一次发布是在1994年,这个版本是在2021年发布的。后面Lua.org是官网,PUC-Rio是Lua所在小组的大学名(巴西里约热内卢天主教大学)的缩写。
在这行信息的下面,会出现>符号,代表此时可以进行交互。我直接输入print(“这是交互模式!”),在下一行立即输出了这句话。
2.执行Lua脚本后,自动进入
lua -i helloworld.lua
使用-i参数,会在执行完脚本后,自动进入交互模式。
交互模式操作
1.交互模式下执行Lua脚本
dofile("helloworld.lua")
可以使用dofile函数执行Lua脚本。
2.退出交互模式
使用组合键Ctrl+C可以退出交互模式。
注释
像其它语言一样,Lua脚本也有注释符号,可以让某一行或多行文本或命令不执行。
1.单行注释(–)
--这是单行注释,不会执行
2.多行注释(–[[和–]])
--[[这是
多行
注释
--]]
数据类型
Lua的数据类型一共有8种。
类型 | 备注 |
---|---|
nil | 无效值,nil 赋值给全局变量代表删除之 type(nil)==nil 结果是 false,因为 type 返回值是 string |
boolean | 只有true和false |
number | 数值 |
string | 字符串 |
table | 表 |
function | 函数 |
userdata | 保存的C语言数据 |
thread | 线程 |
type函数
type函数可以显示一个值的类型。例如:
> type(nil) --> nil
> type(true) --> boolean
> type(3.5*7.3) --> number
> type("Hello World!") --> string
> type(os.time) --> function
> type(io.stdin) --> userdata
> type({3,4,5}) --> table
> type(type(x)) --> string
> co = coroutine.create(function () print("hi") end)
> type(co) --> thread
需要注意的是,type函数的返回值是字符串,因此上面第8行,无论x的值是什么,结果都是string
逻辑运算符
运算符 | 备注 |
---|---|
and | 第一个操作符为假(nil 或 false),返回第一个,否则返回第二个 > 4 and 5 –>5 > nil and 13 –> nil > false and 13 –> false |
or | 第一个操作符不为假(nil 或 false),返回第一个,否则返回第二个 > 0 or 5 –>0 > false or “hello” –>”hello” > nil or false –> false |
not | >not nil –> true >not false –> true >not 0 –> false >not not 1 –> true >not not nil –> false |
惯用写法
1. x = x or v 等价于 if not x then x = v end
2. a and b or c,在 b 不为假时,相当于三元运算 a ? b : c
独立解释器
在终端使用的lua命令,即是独立解释器。
lua命令写法及参数用法
lua [option][script[args]]
-e:直接输入脚本 % lua -e “print(‘hello’)”
-l:加载库 % lua -l lib
-i:进入交互模式 % lua -i
获取参数
% lua -e “x = 1” script a b
arg[-3] = “lua”
arg[-2] = “-e”
arg[-1] = “x = 1”
arg[0] = “script”
arg[1] = “a”
arg[2] = “b”