Lua.1 lua的类型与变量
lua的变量
lua的变量命名与其他语言大致相似,有两点
1. 由数字,字母,下划线构成
2. 不可以使用数字开头
例如:
m n myBook _myiPhone _pc001 _00 _VERSION
注意:
1. _00 这种下划线跟数字的变量不建议写
2. _VERSION 下划线加大写字母的写法多用于保留字,尽量避免
局部变量
局部变量用local 来声明
例如:
local bag
local cup
local telNum = 110
全局变量
只需要给一个变量赋值,那么他就是全局变量
例如:
pcName = "Dell"
car = "Benz"
ID = 001
这些就是全局变量了
注释
单行注释,用 --
多行注释,用 --[[ ]]包起来
-- local num = 0
-- num = 2
--[[
function add(x,y)
return x+y
end
]]
Lua的类型与值
lua是一门动态语言,也称为脚本语言,它区别于我们传统的编译型语言,它是依赖于解释器来执行的,这里我们不做过多介绍。
lua的类型总共分为如下几类
string => 字符串
number => 数字
function => 方法(C/C++程序员可能更习惯称之为函数)
boolen => 布尔值,只有true和false
nil => 空,值只有一个是nil
table => 表,这是Lua最具特点的一个类型,许多特性都依赖于它
thread => 线程
userdata => 自定义类型
函数type可以根据一个值返回对应的类型,例如
type("hello") string
type(1+1) number
type(print) function
type(true) boolean
string类型
字符串需要用用单引号或者双引号来作为界定符
a = "this is a string "
b = "do you konw ?"
c = 'i am xiaoming'
d = 'php is the best language '
我们用系统函数print来把他们打印出来
print(a)
print(b)
print(c)
print(d)
字符串可以用 .. 来连接
a = a .. b
print(a)
a = a .. c .. d
print(a)
还可以连接number类型,大家可以试试
number类型
lua中没有 int double long short float这些类型,number类型表示一个实数,
一下表示都是可以的
num1 = 1
num2 = 1.0
num3 = 3e+1
table类型
官方解释table是一个关联数组,即具有特殊索引方式的数组(associative array)。
1.它不仅可以用整数来索引,也可以用字符串或其他类型的值来索引(除了nil)
2.没有固定大小,可以动态的添加值进来
3.table可以模拟出各种数据结构,包括类与对象都可以模拟出来
4.table不是值也不是变量,它是对象,用C++的解释就是它是内存中的一片区域,而变量只是指向它的指针
声明一个table最简单的办法就是用{}来表示
a = {} -- 声明了一个空table,将a指向这个表
a[1] = 1 -- 以整数为索引,值为1
a["sex"] = "man" -- 以字符串为索引
print(a[1]) -- 1
print(a["sex"]) -- man
table间的赋值只是引用关系
b = a
b[1] = 2
print(a[1]) -- 2
b[1] = a[1] + 1
print(a[1]) -- 3
由上面可以看到,a和b是共享一个table的,它们只是指向一个table的引用而已
function类型
函数在lua里面是第一类型的值,写过其他脚本语言的人可能不太陌生,但是像我
一样从C++这种语言转过来的会觉得非常别扭,居然可以这么用,其实大家想想,
C++里面不也是有函数指针吗,只是没有这么方便
我们可以把函数赋值给一个变量
function log()
print("log")
end
log()
甚至可以当做参数传递
logVar = log
logVar()
function log(msg)
print(msg)
end
function main(log)
log("main function")
end
main(log)