标识符规范:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
不推荐以下划线接大写字母如:_NAME,Lua中某些保留字也是这样的
关键字:
and | break | do | else |
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while |
数据类型:
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
使用type(参数)判断数据类型:
print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
print(type(type(X))) --> string
基本语法总结:
--字符串定义的两种方式
str1 = "this is string1"
str2 = 'this is string2'
--多行字符串语法
str3 =
[[asdasd
asdasd
asdasd
asdasd
]]
print(str3)
--字符串的拼接
print("2".."6") --输出26
print("2" + "6") --输出8.0,当两者皆为number则会转换为number进行加法运算,乘法同理
--print("hello" + 1) --报错,无法转换“hello"
print(10 .. 20) --lua期望一个string却碰到数字,会自动转为string 输出1020
--取字符串长度
print(#str3)
print(#"aaaaa") --输出5,直接计算长度
--table表相关语法:
tab1 = {} --空表
tab2 = {key1 = 100,key2 = 200,k3 = "test"} ----正常初始化一个table
print(tab1) --输出tab1的内存地址
print(tab2) --同上
print(tab2.key1)
print(tab2["key1"]) --当table表键为string时,以下标[]访问table时,中间必须双引号
tab3 = {"aaa","bbb","cccc","ddd"} --创建数组
print(tab3[1]) --访问无键table时,就是访问数组,下标从1开始
for key,val in pairs(tab3) do --正常遍历table语法
print(key..":"..val)
end
for key,val in pairs(tab2) do
print(key..":"..val)
end
--对table内容的修改
tab1.key1 = "hello"
tab1.key1 = 10 --修改数据时直接覆盖
print(tab1.key1)
tab1.key1 = nil --删除该键值对
tab1[10] = 999 --以下标插入
print(tab1[10]) --以下标输出
--if语句语法
if false or nil then
print("至少有一个是 true")
else
print("false 和 nil 都为 false!")
end