Lua 入门学习

来源:互联网 发布:大学生网络危害的案例 编辑:程序博客网 时间:2024/05/02 00:42

一 、简介

(1)、 Lua 语言 快速 简单 灵活 ,因此常用于游戏开发,尤其是 嵌入性的开发,比如,魔兽世界的界面就是用的lua语言


(2)、 更多时候,我们会用c 或者c++ 做功能性开发,而用Lua 做逻辑性开发


(3)、 安装 http://sourceforge.net/projects/luabinaries/?source=typ_redirect


二、创建项目


(1)、新建一个文档,后缀为.lua

(2)、打开命令窗口(Shift+鼠标右键)

(3)、输入 lua53.exe  xxx.lua(文档名)



三、常用语句

(1)、输出  print("Hello world")

(2)、循环

for i=0,10 do
print(i)
end


四、Lua 的值和类型

(1) 数值: 1,2,3.1。。

(2)字符串 :“Hello world”

(3) 布尔  :true ,false


五、变量赋值

(1)、

a=1

print(a)

=====>输出 1


(2)、

a=true

b=false

print(a,b)


=====》输出 true false





六 、Table  ==数组+映射

(1) 、数组 :定义 , 从1开始 ,没有类型限定,大小可自动扩充

a={}
a[1]=10
a[2]=20
a[3]="Hello World"

print(a[1],a[2],a[3])

==》简写
b={10,20,"hello"}
print(b[1],b[2],b[3])

(2)、映射:c[key]=value
c={}
c["hello"]=2
c[3]=false
print(c.hello,c[3])

===》简写
d ={d["hello"]=2,d[3]=false}
print(d.hello,d[3])


七、Lua 函数

(1)、函数的几种写法

(1

function add(a,b)
return a+b
end

print(add(1,2))



(2

a=add(1,2)
print(a)


(3    可把函数当作一个值

add=function(a,b)
return a+b
end

foo=add  
print(foo(1,2))


====》输出 3


(2)、多返回值(一次可返回多个值)

function add(a,b)
return a+b ,a-b
end
print(add(1,2))


====》输出3, -1


(3)、多变量赋值

a,b=1,2
print(a,b)

===》输出1 2

如果

a,b=1

print(a,b)

==>输出 1,nil(表示为空)


如果

a,b=1,2,3

print(a,b)

==>输出 1 2

(4)、交换变量

a,b=1,2
a,b=b,a
print(a,b)

==》输出 2 1



八、Lua表达式

(1) lua中没有  “+=”的说法

a=1
a=a+1
print(a)

==》输出 2


(2) 可直接用表达式计算

b=3
print((b+2)*3)

==》输出 15


(3) 逻辑表达式

--与 或 非
print(true and false)
print(true or false)
print(not true)


(4)拼接 (Lua 中的“+” 只表示 数值运算 ,不能用于字符的拼接,)

--拼接用 “.."
print("hello".."world")

 

(5)作用域 --local (表示局部变量)

function foo()
local a=1  //只在 foo() 函数中有效
end



九、流程控制

(1)、if

if 条件 then

 满足时执行语句

 else

不满足时执行语句

 end


(2)、while


local i=0
while i<10 do
print(i)
i=i+1
end


(3) 、for


(1

for i=0,10,1 do

print(i)
end

===》  表示 初始值为0  ,终值 为10 ,每循环一次+1 (默认缺省)

for i=10 ,0,-2 do
print(i)
end

===》表示初始值为10  ,终值为0 ,每循环一次-2


(2 泛型遍历  -------   ipairs、 pairs(迭代器)

(1   pairs(a) 表示遍历Tab(数组和映射)  ,顺序不一定

a={["foo"]=1,[100]=true,[1]=20,[2]=30}
for k,v in pairs(a) do
print(k,v)
end

===》输出  100 true

                   foo    1

                   2       30

                   1       20


(2  ipairs(a) 表示遍历Tab(只遍历数组部分)

for k,v in ipairs(a) do
print(k,v)
end


===>输出  1  20

                  2  30


十、Lua包(package --我把它理解为命名空间,不同文件之间的调用)


(1)、另外新建一个lua文件  比如 one.lua,里面可以写上自己需要的函数。。。

local c={}

function c.send(a,b)

return  a+b
end

return c


(2)、在之前新建的test.luaa中 调用 one.lua的函数 send

local socket=require("one")
print(socket.send(1,2))

===>输出  3


(3) require("xx")  自动把()里面的字符作为文件名去搜索,并执行(这里不需要添加文件后缀)

          无论程序调用多少次该函数,都只会运行一次 one 文件







十一、Lua 库(我把它理解为各种方法的集合)

(1)、table添加元素  insert

local t={}
for i=1,10 do
table.insert(t,i)
end

(2) 、删除某一个元素  remove

table.remove(t,2)
for k,v in pairs(t) do
 print(k,v)
end


(3) 获取元素个数 #xx

print(#t)


(4) 获取类型  type(xx)

print(type(t))


(5)类型转换  tonumber()、   tostring()...

local a=tonumber("3.14")
print(a)


(6) 格式化string .format()

a=string.format("hi  %d",5)
print(a)


......


十二、总结

(1) 、Tab 买一送二   tab=数组+映射

(2)、 数组的下标从1开始,连续使用时表示是数组,否则为映射 ,并且会自动扩充

(3)、 万物皆值 函数也是一种值

(4)、函数支持多返回值

(5)、逻辑运算用英文 and or not表示 与 或 非

(6)、字符串连接用。。

(7)、local 优化,控制作用域

(8)、迭代器 ipairs  pairs  (ipairs 只遍历数组  pairs 遍历数组和映射)

(9)、单行注释  - -

(10)、多行注释  --[[xxxxx]]













0 0
原创粉丝点击