38/5010分钟学Lua(基础篇)
Posted 小黑同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了38/5010分钟学Lua(基础篇)相关的知识,希望对你有一定的参考价值。
Photo by Mark Boss on Unsplash
这是2019年50篇文章的倒数第13篇
上篇文章我们介绍了Lua这门语言,今天,我们来简单学习一下Lua语言。
安装
在Linux上,可以直接下载源码安装。在Windows上,可以下载编译好的可执行文件,然后将可执行文件的路径加到PATH中,就可以直接使用Lua解释器了。在Linux也是可以直接下载可执行文件来安装的。
第一个Lua程序
print("Hello Lua!")
Lua的打印函数和Python3的使用方式基本一样。
Lua注释
Lua的注释和其他语言不一样,Lua的单行注释用两个横线--表示,多行注释使用--[[和]]--包含起来,例如:
-- 这是单行注释
--[[
这里是
多行注释
]]--
print("Hello Lua!")
数据类型
Lua基本的数据类型有:nil、boolean、number、string、function、userdata、thread和table。Lua定义变量也不需要指定类型,会自动进行类型推断。
n1 = 123 --number
n2 = 11.11 --number
s1 = "abc" --string
s2 = 'xiaohei' --string
s3 = [[lua
luajit]] --多行字符串
b = true --boolean
none = nil --nil
print(n1, n2, s1, s2, s3, b, none)
--和Python一样,可以使用type函数获取变量类型
print(type(n1), type(n2), type(s1), type(b), type(none))
--输出:number number string boolean nil
--可以使用#获取字符串的长度
print(#s1) --3
Lua使用..来进行字符串连接:
a = "abc"
b = "def"
print(a..b)
--输出:abcdef
Lua中的函数也是变量,例如:
-- 定义一个名为func的函数
function func(value)
print("value:", value)
end
-- 定义一个匿名函数并赋值给f变量
f = function(value)
print("value:", value)
end
-- 两种方式都可以调用
func("lua")
f("lua")
-- 也支持多返回值
function func(x, y)
return x + y, x * y
end
sum, mul = func(2, 3)
print(sum, mul) -- 5 6
Lua中的变量默认是全局的,可以增加local关键字声明是局部变量,只在声明的语句块中生效
a = 10
print(a) -- 10
function func1()
a = 11
end
func1()
print(a) --11
function func2()
local a = 12
end
print(a) --11
userdata类型允许将C中的数据保存在Lua变量中。userdata在Lua中除了赋值与相等性判断之外没有其他预定义的操作。可以通过使用元表给userdata定义操作。
thread类型表示了一个独立的执行序列,用于实现协程。
table相当于Python中的list和dict,Lua将这两种类型都放到table这个类型中。和其他语言不同的是,table的索引默认从0开始。定义个table使用{}。
t = {1, 2, 3}
print(t[0]) --nil
print(t[1]) --1
print(t[2]) --2
print(t[3]) --3
t = {}
t["name"] = "xiaohei"
t["age"] = 1
print(t["name"]) --xiaohei
print(t["age"]) --1
循环控制
Lua支持三种循环语句:while,for,repeat until,还支持break和goto来进行控制循环的终止和跳转,来看下都是如何使用的:
print("while:")
count = 0
while(count<10) do
print(count)
count = count + 1
end
print("repeat until:")
count = 0
repeat
print(count)
count = count + 1
until count>10
-- repeat类似C语言的do while,循环至少会执行1次
print("for:")
--生成1-10个数字
for i = 1, 10 do
print(i)
end
--输出:1,2,3,4,5,6,7,8,9,10
--生成1-10的数字,指定第三个参数为2表示每次增加2
for i = 1, 10, 2 do
print(i)
end
--输出:1,3,5,7,9
--第三个参数也可以为负数
for i = 10, 1, -1 do
print(i)
end
--输出:10,9,8,7,6,5,4,3,2,1
--看起来和Python的range函数差不多,只是Lua会包含右区间
--也可以对table进行循环
print("table")
t = {1, 3, 5, 6}
for i, v in ipairs(t) do
print(i, "=>", v)
end
条件判断
直接看代码:
t = {-5, 9, 2, 0, 4, -8}
for i, v in ipairs(t) do
if v > 0 then
print("正数:", v)
elseif v == 0 then
print("0:", v)
else
print("负数:", v)
end
end
也可以没有elseif和else分支。
今天先介绍这么多,这些都是Lua基础的语法,下篇我们在介绍一些更高级的。
作者水平有限,如有错误之处,还望指正。
以上是关于38/5010分钟学Lua(基础篇)的主要内容,如果未能解决你的问题,请参考以下文章