Lua基础教程之类型与值
注释
单行注释
--
多行注释
--[[
--]]
基本数据结构
nil
nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值,对于全局变量和table,nil还有一个“删除”的作用,将其赋值为nil即可。
nil作比较时,应该加上双引号""
type(X)
nil
type(X)==nil
false
type(X)=="nil"
true
type(X)==nil 结果为 false 的原因是因为 type(type(X))==string。
number
Lua 默认只有一种 number 类型 -- double(双精度)类型(默认类型可以修改 luaconf.h 里的定义),以下几种写法都被看作是 number 类型:
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
boolean
boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true:
lua常见的逻辑运算符 and、or、not,即C#中的与&&、或||、非!
比较两个数值的大小
(x>y) and x or y
string
string1 = "this is string1"
string2 = 'this is string2'
也可以用两个方括号来表示 [[]]
html =
[[
双括号表示字符串
]]
在对于一个数字字符串上进行运算时,会自动将字符串转换为数字进行运算
print("2"+6) 输出 8
print("2+6") 输出 2+6
字符串加的操作符为 两个点 ..
print("string".."abc") 输出 stringabc
使用#来计算字符串的长度
print(#"abcd") 输出 4
输出多个字符串
print("first string","second string")
输出 first string second string
字符串转换为数字
函数tonumber将字符串转换为数字,当这个字符串不能转换为数字时,tonumber返回nil 数字转换为字符串 tostring或者将数字与空字符串相连接
table
在lua中table类似于C#中的字典,也是基于键值对来操作。
-- 创建
table tba1 = {} --空表 {} 构造表达式
--初始化一个表
tab2 = {key1 = 100,key2 ="value"}
print(tab2["key1"])
tab3 = { "apple","pear","cccc"}
--遍历table
for key,val in pairs(tab3) do
print(key ..":" .. val)
end
输出 100 1:apple 2:pear 3:cccc
不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。
table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。
修改table中的内容
--修改tab内容
tab1.key1 = "abcde"
tab1["key2"] = "mmmmm"
print(tab1.key1)
print(tab1["key2"])
--删除key值
tab1.key1 = nil
对于默认的key值索引,当删除时,不会移动位置
tab3 = { "apple","pear","cccc"}
tab3[2] = nil
for k,v in paris(tab3) do
print(k ..":"..v))
end
输出 1:apple 3:cccc
tab3 = nil 取消tab3对表的引用,当一个程序再也没有对一个table的引用时,lua的垃圾收集器(GC)最终会删除该table,并复用它的内存。
table最大正索引数
table.maxn a = {}
a[1000] = 1
print(table.maxn(a)) ==> 1000
function
--定义基本函数
function fact(n)
if n == 1 then
return n
else
return n*fact(n-1)
end
end
print(fact(3))
--匿名函数的使用
function testFun(str,func)
func(str)
end
function f1(str)
print(str)
end
testFun("lua",f1)
testFun("test",f1)