学习一门编程语言,必然需要先从它的语法开始,所以今天先来学习下 Lua 的基本语法。
首先一个就要说到注释了,一段程序无论编写得多好,少量的注释也是必要的。在 Lua 中的注释比其他的语言稍有不同。
这里还介绍一个技巧就是如何解放多行注释里的内容呢,只需要这样:
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)
|
关键词
我们在给变量起名的时候,往往会遇到变量名和语言内置的关键词重复了,而一般保留关键字是不能作为变量的,这里列举 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,只有nil和false为“假”,其它如0和""都是真,这一点要特别特别注意! number 数字,值为实数,Lua默认为double,LuaJIT会根据上下文选择用整型或者浮点型存储 string 字符串,支持单引号、双引号和长括号的方式 table 表,关联数组 function 函数
|
nil(空)
boolean(布尔)
1 2 3 4 5 6 7 8
| 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
| 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
|
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 的基本类型暂时学习这么多,后续针对不同的类型进行深入的学习。