lua基础

来源:互联网 发布:电视剧《福贵》知乎 编辑:程序博客网 时间:2024/05/22 08:21
lua 
lua中的8中基本类型 :
nil (空类型)   boolean (布尔类型)    number(数字类型) string(字符串类型)
table(表类型)  function(函数类型)    thread(线程类型) userdata(自定义类型)

使用type函数判断一个值的类型,type函数返回一个对应类型的字符串描述
例如 : local iValue = 10
if type(iValue) == "number" then
print( "iValue is a  number")
end


nil一个全局变量在第一次赋值前的默认值是nil,将nil赋予一个全局变量等于删除它;
Boolean可选值为 :false ,true ;false和nil都是假,除此之外全是真;
number表示双精度浮点数,
string表示一个字符串序列 ,是不可变的值;使用“[[]]”表示一个多行字符串且不解析转义序列
例如 :  local page=[[ <html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>xxx</title>
</head>
</html>]]
print(page)
table 表实现了关联数组(关联数组是一种具有特殊索引方式的数组,不仅可以通过数字来索引它,还可以使用字符串或其他类型的值,除nil来索引)
table没有固定大小,可以动态添加;




逻辑操作符 :
lua提供的逻辑操作符有 and ,or 和not ;
对于and ,如果他的第一个操作数位假,就返回第一个操作数 ;不然就返回第二个操作数 ;
对于or ,如果他的第一个操作符位真,就返回第一个操作数,不然就返回第二个操作数;
lua的逻辑操作数并不是简单的返回true或false ;而是返回操作数的值 
例如 : print(2 and 5)    ---》5
print(nil and 12) ---> nil
print(false and 1)  ---> false
print( 2 or 5) ---> 2
print (false or 5)  ---> 5

字符串链接 :使用操作符 ..


table构造式 :local tDays ={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
print(tDays[1])
print(tDays[2])
local tb1 = {x =10,y=20}   也可以  local tb1 = {["x"] = 10,["y"]=20}
print(tb1.x);
print(tb1["x"]);
local a ={}
x = "y"
a[x]  =10
print(a[x])  --> 10 相当于a["y"]
print(a.x)   --> nil 相当于a["x"];
print(a.y)   --> 10 相当于a["y"]




赋值 ;允许多重赋值,就是将多个变量赋予多个值;
例: local x,y = 2,4
print(x)    -->2
print(y) -->4
如果需要交换两个元素的值 ;
local x,y =2,3
x,y = y,x
print(x) --> 3
print(y) --> 2


lua总是会将等号右边值的个数调整到与左边变量个数想一致;
规则是 : 如果左边个数多余右边值,那么多余的变量被赋值nil ;如果值的个数多,则多余的值被忽略 ;


局部变量与块 ;
i = 10 全局变量
local i= 10 局部变量
使用do/end声明一个块 ;
例 : do
local a = 10
end (a的作用域到此结束)

控制结构
if then else end
while 条件 do 
。。。。
end 
for var = v1,v2,v3 do
print(v1)
end
var 从v1变化到v2,v3为每次变化的步长,v3为可选,如不指定,默认1;
使用for循环注意事项 :
1,v1,v2,v3 这三个表达式在循环开始前一次性求值的,并不会每次循环都进行求值;
2,控制变量var会被自动的声明为for语句的局部变量,仅对循环体内可见;
break与return
break用于结束一个循环;return用于结束一个函数并返回结果;


函数 :
函数定义的特殊情况 :一个函数若只有一个参数,且此参数是字符串或table,那么小括号可以省略;
例 : print "hello world" --> print("hello world") 等价
 print [[a multi-line 
msg ]]
 f{x=10,y = 20} --> f({x=10,y=20})
0 0
原创粉丝点击