前言
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
在本课中,如果你是个新手,请跟着教程一步一个脚印,学习Lua的基础
一、第一个 “Hello World”
打开你的代码编辑器
输入
print("Hello World")
输出
Hello World
由此可见我们的 "print()"正如翻译:打印/输出
格式print(xxx)
其中xxx可以是数字,也可以用双引号 “” 单引号 ‘’ 输出字符串
什么是字符串
简单讲就是 双引号里面的内容
例如:
“Abc”
“CBA”
Q:如果你想在字符串里面打双引号,单引号怎么办?
A: 如果你想打双引号 那么用 单引号括内容,单引号也是
E:
输入:
print('"ABC"')
print("'CBA'")
输出:
"ABC"
'CBA'
Q:如何打多行字符串
A:在Lua中可以使用[[内容]]来实现多行字符串。或者在单双引号里面使用"\n"换行
E:
输入:
x=[[321
123]]
b='lol\n321'
print(x)
print(b)
输出:
321
123
lol
321
变量
在上一案例中利用了变量的概念,可什么是变量呢?
x=123
此时此刻,x代表了123这个值,而x就是变量名,这个操作,称之为 赋值
变量名可以是任何英文,下划线,数字
!!!!
注意变量名不可以使用数字开头
Q:什么意思?
A:我们可以使用A123,AB1,AB2,AB3等作为变量名,而不能使用1AB,2AC,3AD等作为变量名
以下关键字也不可使用
and | break | do | else |
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while | goto |
局部变量
在赋值前加上 local 代表局部变量
Q:局部变量和上面的变量有什么区别吗
A:上面的变量称之为全局变量,局部变量是在一个部分里面的临时变量,不与全局变量冲突,如果你在函数内使用了同名局部变量,那么将会优先使用局部变量,BUT!!局部变量是有限制的,不推荐大面积使用
基本语法
注释:–
在代码前面使用"–"表示注释
例如:
输入
print(888)
--print(123)
输出
888
数据类型
在每个高级语言中,基本上都有数据类型的概念
Lua的数据类型常用可以分为以下种类:
- nil
- boolean
- number
- string
- function
- table
nil
空类型,类似于其他语言的null
如果打印一个不存在的变量就会返回nil
例如
输入
print(abc)
输出
nil
Q:为什么打印nil,不是有abc吗
A:因为abc是个不存在的变量,而不是字符串
boolean
中文名字:布尔型
只有true 和 false
两个值,也可说 真 假
注意!
在lua中
除了nil,false以外均是true
使用以下代码证实上述
输入:
if false or nil then
print("false 和nil至少有一个为真")
else
print("false 和 nil 都为假")
end
if 0 then
print("0是真")
else
print("0是假")
end
输出:
诶结果我不给你,自己实验去,实践出真知
number
任何不带引号的数字都看做number
例如
print(123123)
print(1.3)
print(type(123123))
print(type(1.3))
输出:
123123
1.3
number
number
也可以使用科学计数法
例如:
print(2e1)
print(2e999)
输出:
20
1.#INF
Q:为什么2e999输出 1.#INF
A:1.#INF 是代表一个无效数字,至于出现这个问题是由于lua的number类型类似 int64+double 的组合体
而int64最大的值是2的63次方-1,超过了这个范围就会无效
function
这个以后细讲,现在只需要了解他的名字 方法/函数
table
table的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据
--一个空table
table1={}
table2={'a','b'}
下标
又称为索引,lua里 在table中,第一个位置的下标是1,第二个是2,以此类推
如果没有值,那就返回nil
同时,我们可以赋值字符串,下标为任意值,注意,赋值下标为字符串那必须使用字符串才可以输出
例如
a={'c','b','d'}
a['e']='f'
print(a[1])
print(a[3])
print(a[4])
print(a['e'])
输出
c
d
nil
f