Lua 编程之基本语法与数据类型

2.1k 词

学习一门编程语言,必然需要先从它的语法开始,所以今天先来学习下 Lua 的基本语法。


首先一个就要说到注释了,一段程序无论编写得多好,少量的注释也是必要的。在 Lua 中的注释比其他的语言稍有不同。

1
2
3
4
5
6
7


-- 多行注释
--[[
print('多行注释里面的内容')
print('多行注释里面的内容2')
--]]

这里还介绍一个技巧就是如何解放多行注释里的内容呢,只需要这样:

1
2
3
4
5
-- 技巧
---[[
print('多行注释里面的内容')
print('多行注释里面的内容2')
--]]

标识符


说完注释我们再来看 Lua 中的标识符,简单的描述就是,Lua 中的标识符都以字母开头(无论大小写)或者下划线开头,切记不要使用特殊字符(¥,@,%…),而且 Lua 中是区分大小写的。
列举一些正常的标识符:

1
2
mohd         zara      abc     move_name    a_123
myname50 _temp j a23b9 retVal

变量


1
2
3
4
5
6
7
8
9
10
11
12
13
globalVar = '全局变量,哪都用的到'
local localVar = '局部变量,在局部范围可用,看它声明在哪'

local b = 5 -- 局部变量

-- 剧透下 函数
function ()
c = 5 -- 全局变量
local d = 6 -- 局部变量
end

func()
print(c,d) --> 5 nil

关键词


我们在给变量起名的时候,往往会遇到变量名和语言内置的关键词重复了,而一般保留关键字是不能作为变量的,这里列举 Lua 中的关键词。

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

数据类型


在 Lua 中变量是不需要类型声明的,只需要为变量赋值就可以了,而 Lua 是有多种基本类型,主要如下:

1
2
3
4
5
6
nil       空类型,表示无效值,变量在被赋值前都是nil,将nil赋给一个全局变量等同将其删除
boolean 布尔类型,值为true/false,只有nilfalse为“假”,其它如0""都是真,这一点要特别特别注意!
number 数字,值为实数,Lua默认为double,LuaJIT会根据上下文选择用整型或者浮点型存储
string 字符串,支持单引号、双引号和长括号的方式
table 表,关联数组
function 函数

nil(空)

1
2
3
> print(type(a))
nil
>

boolean(布尔)

1
2
3
4
5
6
7
8
-- type 函数 是 Lua 中内置的可以测试变量或值的类型
print(type(true))
print(type(false))
print(type(nil))

boolean
boolean
nil

number(数字)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- Lua 默认只有一种 number 类型就是 double,整数和浮点数类型都是 number
print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(0.2e-1))
print(type(7.8263692594256e-06))

-- 输出结果
number
number
number
number
number
number

string(字符串)

字符串可以是由单引号或者双引号来表示,当然也可以用方括号来表示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
str1 = '字符串1'
str2 = "字符串2"
str3 = [[
这是一整块的字符串
还可以换行
哈哈
]]

print(str1)
print(str2)
print(str3)

--输出结果
字符串1
字符串2
这是一整块的字符串
还可以换行
哈哈

table(表)

table 是一个关联数组也是一种有特殊索引的数组,当然 nil 不能作为索引。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- 事例暂且不作过多说明,后续深入学习
-- table 的 声明定义
local t1 = {
str = "这是字符串",
t2 = {"字符串1","字符串2","字符串3"},
9000,
10000,
[8] = 8000,
["s"] = "strs"
}

print(t1.str)
print(t1.t2[3])
print(t1[2])
print(t1[8])
print(t1["s"])

-- 输出结果
这是字符串
字符串3
10000
8000
strs

function(函数)

1
2
3
4
5
6
7
8
9
10
11
12
-- 声明函数
function add( x,y )
return x + y;
end

-- 存储函数在变量里
a = add;

print(a(1,1))

-- 输出结果
2

Lua 的基本类型暂时学习这么多,后续针对不同的类型进行深入的学习。