MAC下Lua开发(2)---实战演习

作为IT人,如何快速的学习一门语言,个人认为就是多练,所以对于lua这种轻巧型语言,借鉴了一下别人的经验,写了一篇实战演习,以后如果忘记哪些用法,看一下这篇代码,就逢凶化吉,大事化小,OK了!


代码BEGIN:


--行注释语句
--[[
注释段落语句
]]


--lua是类C的,所以,他是大小写字符敏感的。


-- 每一行代码不需要使用分隔符(;),当然也可以加上
-- 访问没有初始化的变量,lua默认返回nil


--变量不需要定义,可以直接赋值
count = 100 --全局变量
local count = 100 --局部变量


--基本变量类型
a = nil --lua中值为nil,相当于删除
b = 10
c = 1.2
d = false
--定义字符串,单引号,双引号都可以,还支持C类型的转义,例如:"\n"(换行),"\r"(回车)
e = 'i am'
f = "wade"
--两个中括号可以用于定义有换行的字符串
g = [[i am   
wade]]
print(g)


--两个字符串的连接可以如下形式
stringA = e
stringB = f
print(stringA..stringB)
print(stringA.."\n"..stringB)
--修改字符串的部分gsub,可以如下形式:(将stringA字符串中的am 修改为AM)
stringA = string.gsub(stringA,"am","AM")
print(stringA)
--取一个字符串的长度使用 #
print(#stringA)


--lua的数字只有double型,64bits,0x开头的16进制和C是很像的
num = 1024
num = 3.1415926
num = 0xff


--将字符换成数字tonumber(不转也会自动转)
--将数字换成字符tostring(不转也会自动转)
stringC = "100"
stringC = tonumber(stringC)
print(""..stringC)
stringC = stringC + 20
stringC = tostring(stringC)
print(stringC)


--创建 表
--所谓Table其实就是一个Key Value的数据结构


--先来看数组功能
arr = {10,20,30,40,50}
--等价于
arr = {[1]=10,[2]=20,[3]=30,[4]=40,[5]=50}
--lua的下标不是从0开始的,是从1开始的。
--#arr,取arr的长度
for i=1,#arr do
print("arr:"..arr[i])
end


--再来看看key-value功能
people = {name="wade",age=23,handsome=true}
people.address = "yantai"
people.handsome = false
people.age = people.age + 1
print("people.age:"..people.age)
--遍历输出
for k,v in pairs(people) do
print("dfg:"..k,v)
end


--同时定义不同类型的数组
difArr = {"haha",100,function() print("hehe") end}
--函数的调用:difArr[3]()



--打印变量类型
isOK = false
print(type(isOK))


--控制语句
--注意 lua没有++或者+=这样的操作


--if then elseif then else end
abc = 1
if abc==1 then
print("abc==1")
elseif abc==2 then
print("abc==2")
else
print("abc >2")
end
--条件表达式中的与或非为分是:and, or, not关键字。相当于:&&,||,!
www = 3
if www>1 and www<3 then
print("www>1 and www~=3")
elseif www <10 or www~=5 then 
print("www > 1 or www~=5")
elseif not www then
print("www not 5www not 5")
end


--for
--从3(第一个参数)长到10(第二个参数),每次增长以2(第三个参数)为单位
for i=3,10,2 do
print("for i:"..i)
end
--也可以不制定最后一个参数,默认1的增长速度
for i=3,10 do
print("for ii:"..i)
end


--对于遍历table表
tableWade = {"wade1","wade2","wade3","wade4"}
for k,v in pairs(tableWade) do
print("for iii:"..k.."  value:"..v)
end


--while
--“~=”是不等于,而不是!=
isFlag = true
w1 = 10
while isFlag~=false do
w1 = w1 +1
print("w1:"..w1)
if w1==15 then
isFlag = false
end
end


--repeat until
aa = 20
repeat aa=aa+2
print("repeat:"..aa)
until aa>23
print("until:"..aa)


--函数详解
--方法定义
function hello(...)
--打印
print("Hello lua!")
print(string.format(...))
end


--调用函数
hello("你懂得")


--有一个返回值的函数
function funTestBackOne(oneNum)
local oneNum = oneNum + 1
return oneNum
end


a=10
print(funTestBackOne(a))


--有两个返回值的函数
function funTestBackTwo(oneNum,twoNum)
local oneNum = oneNum+2
local twoNum = twoNum+3
return oneNum,twoNum
end


a,b = funTestBackTwo(1,2)
print(a.."and"..b)


--有变长参数的函数
function funTestBackMore(...)
print(...)
end


funTestBackMore(a,b,"wade")


--递归
function fib(a)
if a<2 then
print("fib:a"..a)
return a
end
print("fib:"..a)
fib(a-1)
end


print(fib(5))


--闭合函数(一个函数写在另外一个函数内)
function funTest1(...)
local d=12
d = d+...
function funTest2(...)
print(...)
end
funTest2(d)
end


funTest1(100)


--引用其他lua文件,不需要加上(.lua)后缀
--require "xx"


--require函数,载入lua文件时,只有第一次的时候会去执行,后面相同的都不执行了。
local hao = require("print")
local hao = require("print")
--如果你要让每一次文件都会执行的话,使用dofile("xx")函数
--如果你要载入后不执行,等你需要的时候执行时,你可以使用loadfile()函数


你可能感兴趣的:(lua)