前言

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的数据类型常用可以分为以下种类:

  1. nil
  2. boolean
  3. number
  4. string
  5. function
  6. table

nil

空类型,类似于其他语言的null
如果打印一个不存在的变量就会返回nil
例如

输入
print(abc)
输出
nil

Q:为什么打印nil,不是有abc吗
A:因为abc是个不存在的变量,而不是字符串

boolean

中文名字:布尔型
只有truefalse
两个值,也可说 真 假

注意!
在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