[Lua]lua初识
-- mac 上有很多文本编辑器,Himi找了很多,感觉TextMate是比较好用的,小巧且功能强大!而且免费,图标是个小菊花 - -
-- 注释语句
?
--[[?
注释段落语句
??
]]
--
?
--引用其他lua文件,不需要加上(.lua)后缀
--require "xx"
?
--变量不需要定义,可以直接赋值
count
=
100 ?
--成员变量
local
--局部变量
?
--方法定义
function hello
(
...
)
????
--打印
print
"Hello Lua!"
)
;
string
.format
)
end
?
-- 每一行代码不需要使用分隔符,当然也可以加上
-- 访问没有初始化的变量,lua默认返回nil
?
-- 调用函数形式
hello
"你懂的"
)
?
--打印变量的类型
isOK
false
type
isOK
)
?
-- 基本变量类型
a
nil
--Lua 中值为nil 相当于删除
b
10
c
10.4
d
false
--定义字符串,单引号,双引号都可以的
e
"i am"
'himi'
?
--两个字符串的连接可以如下形式
stringA
"Hi"
stringB
"mi"
stringA..stringB
)
?
--另外Lua也支持转移字符,如下
stringA..
"n"
..stringB
;
?
--修改字符串的部分gsub,可以如下形式:(将stringA字符串中的Hi修改为WT)
stringA
.gsub
,
"Hi"
"WT"
)
;
?
--将字符换成数字tonumber(不转也会自动转)
--将数字换成字符tostring(不转也会自动转)
stringC
"100"
tonumber
stringC
)
+
20
tostring
)
)
?
--取一个字符串的长度使用 #
#stringC)
?
--创建 表
tableA
{
}
m
"x"
tableA[m]
100
m
2
'y'
tableA[m
]
200
tableA[
"x"
]..
..tableA.y
)
--另外表还可以如下形式(从1开始)
tableB
"4"
"5"
"6"
"7"
"8"
}
tableB[
1
]
)
?
--算术操作符
c
10
2
-2
3
*
2
4
/
2
5
^
2
6
%
2
7
-10
2
1.
.
"_"
..c
2.
3.
4.
5.
6.
)
?
--控制操作
--if then elseif then else end
abc
10
if?
then
"v1"
)
elseif abc
9
then
"v2"
)
else
"v3"
)
end
?
--for
--从4(第一个参数)涨到10(第二个参数),每次增长以2(第三个参数)为单位
for
i
do
"for1:"
..i
)
end
--也可以不制定最后一个参数,默认1的增长速度
do
"for2:"
)
end
?
tableFor
"himi1"
"himi2"
"himi3"
"himi4"
"himi5"
}
k
v
in
pairs
tableFor
do
"for3:key:"
..k..
"value:"
..v
)
end
?
--while
w
20
while
true
do
1
if
25
then
????????
break
end
end
"whlile:"
..w
)
?
--repeat
aa
20
repeat
aa
2
"repeat:"
..aa
)
until aa
>
28
?
--关系操作符
--需要注意的是不等于符号 ~=? 而不是!=
ax
10
bx
20
?
then
"GX1"
)
elseif ax
<
then
"GX2"
)
then
"GX3"
)
then
"GX4"
)
then
"GX5"
)
elseif ax~
then
"GX6"
)
else
"GX7"
)
end
关于函数 --函数详解
?
--有一个返回值的函数
function funTestBackOne
aCount
)
1
return
aCount
end
?
20
funTestBackOne
a
)
?
--有多个返回值的函数
function funTestBackMore
)
3
end
?
funTestBackMore
)
a..
" and "
..b
)
?
--有变长参数的函数
function funTestUnKnow
...
)
)
end
funTestUnKnow
b
"Himi"
)
?
--闭合函数(一个函数写在另外一个函数内)
function funTest
)
12
;
d
...
)
end
funTest
)
end
?
100
)
day1 --[[function fuc(n) if n==0 then
--替换字符串 --转换数字 ? --拼接字符串 print("hell".."o") --转换 print("我是一个字符串"..tostring(n)) print("10"=="10") --#计算长度
--使用同一个table --自动增长 --循环存储值 --输入打印数组的值 --[[
--取小数点后面几位
--[[ --[[ --[[ days = {"Sunday","Monday","Tuesday","Wednessday","Thursday","Friday","Saturday"} --a={x = 10,y = 20} <=>a = {};a.x = 10;a.y = 20
local l = list
--相当于do while
--[[ revDays = {["Sunday"] = 1,["Monday"] = 2,["Tuesday"] = 3,["Wednessday"] = 4,["Thursday"] = 5,["Friday"] = 6,["Saturday"] = 7} table.sort(revDays) --数组排序 --]]
--[[ --[[
--函数 --[[ a = {1,2,4,5,6}
--[[
t = {}
day3 --面向对象 People = {} --定义一个p表 function clone(tab)
--[[People.sayhi = function()
People.sayhi = function(self)
--继承 function copy(dist,tab)
Man.new = function(name) Man.sayHello = function() Man.sayhi = function(self) local m= Man.new("人") lua不支持函数重载 --可变参数 function show(...) show() local k = People.new("丁小未") --原表 local tbA = {a = 1} local mt = {__index = function(tb,k) ? --这个元方法用于读取值print("__index key:" .. k)if k == 'a' thenreturn 10endreturn nilend,__newindex = function(tb,v) ?--这个是用于设置值print("__newindex key:" .. k)end}]]setmetatable(tbB,tbA)tbB.a = 3print(tbB.a)--tbB.d = 3--tbB.b = 5--print(tbB.d) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |