lua
来源:互联网 发布:js统计页面刷新次数 编辑:程序博客网 时间:2024/05/02 00:24
Lua是一个小巧的脚本语言。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。[2] Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。[2] 一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
-- print("Hello,Lua") --Hello,Lua
-- print("hangsfsfdg") --hangsfsfdg
-- print("idsf");print("sfsfdfg") --idsf --sfsfdfg
-------------------变量------------------
--Lua中变量无需指定数据类型,根据赋值号右侧数据内容的类型
--类别会自动识别
-- name = 100
--如果值字符串类型可以使用“”,也可以使用‘’
--lua语言中变量可以直接引用
-- print(name) --100
-- print(type(name))--nuamber
--可以这样赋值,定义两个变量可以只赋一个值
-- sex,age = '男',18
-- sex,age = '男'
--gender = 'man',18
-- print(sex,age)
---------------逻辑运算符----------------------------
--lua中逻辑运算符:and or not
--nil为false,其他任何值(包括0)都为真
--当and时,两个值都为真时取后一个值
--当or时,两个值都为真时取第一个值
-- isOk = true
-- print(not isOk or 1)--1
-- print(isOk and msg)--nil
-- print(nil and 3)--nil
-- print(4 or 5)--4
-- print(4 and 5)--5
-- print(false or 5)--5
-- print(not 4)--false
------------------三目运算符-------------------
-- a=4
-- b= 5
-- print(a or b) -- 4
-- print(a and b) -- 5
-- isOk?4:5
-- isOk = false
-- print((isOk and a) or b)
-----------------连接运算符-------------------------------
-- print("wangxing".."真的好丑")
-------------------数组------------------数组是一个table类型的
-- table_age = {} --可以这样定义
-- table_age = {"hello",1,2,3,4,5}--可以存储不同的类型的元素
--数组的长度不用固定
-- print(type(table_age))
--访问数组元素.默认数组的下标是从1开始的,数组越界不会崩溃,会直接打印nil(它也是一种数据类型)
--如果想要下标从0开始----------------给他制定一个值
-- print(table_age[1]) -- hello
-- table_num={1,3,5,7}
-- table_num[0] = 9
-- table_num["aa"] = 8
-- print(table_num[0]) --nil
-- print(table_num["aa"]) --nil
-- print(table_num[1]) --1
--任意类型都可以存储,包括函数
--如果表里面的数据包括普通的数值,又有键值对,使用表名【下标】取得值是表里面的普通数值,会把键值对跳过去,表明[下标]只会读取普通数值
--如果想取键值对,则表名[‘键的名字’]或表名.键名
-- score = {
-- [0] = 34,
-- o = 35,
-- name = "lanou",
-- 69,
-- age = 20,
-- 89,
-- nil
-- }
-- print(score.name) --lanou
-- print(score['name']) --lanou
-- print(type(score)) --table
-- print(score[0])--34
-- print(score['o'])
-- print(score[1])--69
-- print(score.name)
-- name = 9
-- tab = {"Lanou",age = 20,60,name}
-- print(tab[0]) --nil
-- print(tab[1]) --lanou
-- print(tab.age) -- 20
-- print(tab[3]) -- 9
-- table相当于数组
-- score = {89,90,78,60}
--table相当于一个字典
-- tab = {name = "LO",age = 20,["mmm"]='jjj',[111]=555}
--表里面的注意事项
--[[
1.所有元素以逗号分开
2.所有索引值都需要用[]扩起来,但是如果是字符串,就可以去掉引号和中括号,如果没有[]括起来,则认为是字符串索引
3.如果不写索引,则索引就会被认为默认为数字索引,并按顺序自动从1开始往后编
4.如果字符串当索引的话,不能直接使用引号,,可以直接使用在[]中添加引号形式
]]
-- print(tab['mmm']) --jjj
-- print(tab[111])--555
-- stuent ={["name"] = "wangxing",30,28,30}
-- tab1 = {[tab]= "table"}
-- print(tab1[tab])
--look = {[temp]= 1,11} --这种情况下会报错table index is nil
-- temp = 2
-- temp1= 2
-- tab = {[temp] = 1,11}
-- temp = 1
-- print(tab[temp])--11
-- print(tab[temp1])
--虽然定义了temp = 2,但是后来改变了temp = 1,所以指向的另外的key
--由上综述
--1.对于字符串,在{}定义时,可以Key = value,也可以[“flag”]= nil,索引都是string类型,对于非nil类型变量(包括字符串),都可以使用[var]= value的方式
--2.使用table时,对于字符串,可以通过.的方式进行访问,也可以通过[]方式访问,对于tab[a]和tab[b],如果a=b,tab[a]访问到tab[b]的内容
-- -------------------------循环-------------------------------
--循环语句1
--[[
for i=起始值,终止值,增量(可忽略) do
循环体
end
]]
--输出2-10之间的所有偶数
-- for i=2,10,2 do
-- print(i)
-- end
--循环语句2
--while循环体内可以更改循环条件,而for循环不可以
--[[
whie 条件表达式 do
循环语句
end
]]
--输出2-10之间的所有偶数
-- i = 2
-- while i<=10 do
-- print(i)
-- i=i+2
-- end
--循环语句3
--[[
repeat
循环语句
until 条件表达式
]]
--输出1-100之间的所有数的和
-- i= 1
-- sum = 0
-- repeat
-- sum = sum+i
-- i=i+1
-- until i>100
-- print(sum)
--如果老王有10000元,每天花一半,多少天可以花完如果剩余数量小于0.01,算花完
--方法1
-- b = 10000
-- c = 0
-- d = 0
-- repeat
-- c = b/2
-- b= b-c
-- d = d+1
-- until b<0.01
-- print(d)
--方法2
-- money = 10000
-- day = 0
-- while money>=0.01 do
-- money = money/2
-- day= day+1
-- print(money)
-- end
-- print(day)
--sum = 1+2+3+.....+N,求sum不超过10000的最大整数值和项值
-- zhi = 0
-- xiangzhi = 0
-- repeat
-- i = i+1
-- zhi = zhi+i
-- until zhi>10000
-- print(zhi-i)
-- print(i-1)
--求1-100内质数的和
-- sum = 0
-- sun = 0
-- for i=3,100,2 do
-- for j=2,i-1,1 do
-- if i%j==0 then
-- sum = i
-- end
-- end
-- sun = sun+sum
-- end
-- print(sun)
-- sum = 0
-- for i=2,100 do
-- t = 0
-- for j=i,2,-1 do
-- if i%j == 0 then
-- t = t+1
-- end
-- end
-- if t==1 then
-- sum = sum+i
-- end
-- end
-- print(sum)
----------遍历数组-----------------
-- arrAges = {1,2,3,4,5}
--表中插入一个元素
-- table.insert(arrAges,2,"nihao")
--表中移除一个元素
-- table.remove(arrAges,4)
-- for i=1,#arrAges do
-- print(arrAges[i])
-- end
------------通过#表名,可以获取table或者字符串的长度
--获取表名的长度#name或这字符串的长度
-- name = "lanoukeji"
-- print(#name)
--列出参数中指定table的数组部分从Start位置到end位置的所有元素
--这些元素之间以指定的分隔符隔开
-- print(table.concat(arrAges,"*",1,3))
--使用Table来实现冒泡排序
-- SortArr = {20,19,56,9,67}
-- for i=1,#SortArr do
-- for j=1,#SortArr-i do
-- if SortArr[j]>SortArr[j+1] then
-- tem = 0;
-- tem = SortArr[j]
-- SortArr[j] = SortArr[j+1]
-- SortArr[j+1] = tem
-- end
-- end
-- end
-- for i=1,#SortArr do
-- print(SortArr[i])
-- end
--if语法的三种格式
--1.
-- if true then
-- print("苹果")
-- end
--2.
-- if true then
-- print("苹果")
-- else
-- print("香蕉")
-- end
--3.
-- if true then
-- print("苹果")
-- elseif(a==3) then
-- print("香蕉")
-- else
-- print("梨")
-- end
--for i = 1, 10,2 do
-- i = i + 100
-- print(i)
-- end
---101 ,103, 105,107,109
--在lua中一旦循环条件设定,下面对循环变量的更改,不会对结果造成影响(避免这种情况的出现)
--print(#dic)
-- for i,v in pairs(dic) do
-- print(v)
-- end
--练习,求出集合中出现频率最高的元素,并输出
arr = {4,"blue", "blue", "red","blue"}
-- //dic存储数组中出现的元素 = 次数
-- dic = {}
-- for i = 1,#arr do
s = arr[i]
print(s)
-- if dic[s] then
-- dic[s] = dic[s] + 1
-- else
-- dic[s] = 1
-- end
-- end
-- for i,v in ipairs(dic) do
-- print(k,v)
-- end
-----------------------------------方法-----------------------------------
--方法可以使用一个变量来接收,这个变量就是方法的名字
-- func = function ()
-- print("This is a funcion")
-- end
-- print(func)
-- func()
-- sum(4,5)
-- hero = {name = "Dema", hp = 1000}
-- hero.attack = function()
-- print("attack")
-- end
-- hero.attack()
-- hero = {name = 'hero',hp = 1000,attack = function()
-- print("attack")
-- end}
--函数的多重返回值,只需要在return关键字后面
--列出返回值,用逗号隔开,多重返回值需要使用多个
--变量接收
-- function Cal(a,b)
-- return a + b,a - b, a * b, a / b;
-- end
-- w, x,r,t = Cal(2,4);
-- print(w,x,r,t)
-- function func()
-- end
-- function func()--无返回值
-- end
-- function func1( )--有一个返回值
-- return "a"
-- end
-- function func2()--有两个返回值
-- return "a" ,"b"
-- end
-- x,y = func2() --x = "a" y = "b"
-- x = func2() --x = "a", b会被丢失掉
-- x,y,z =10,func2() -- x = 10, y = "a" , z = "b"
-- x, y =func() -- x= nil y = nil
-- x,y = func1() -- x = "a", y = nil
-- local t = {func()} -- t表示一个空的table
-- local t ={func1()} -- t = {"a"}
-- local t = {func2()} -- t = {"a", "b"}
-- --当多重返回值的函数调用出现在table表中时,在
-- --访问表中元素是只会返回当前函数的第一个返回值
-- local t = {func(), func2,4} --
-- print(t[1])
-- print(t[2])
-- print(t[3])
-- --可以在一个函数中返回另一个函数的返回值
-- function MyFunc( )
-- --注意:这里如果是返回func2(),表示会返回
-- --func2中所有返回值,如果是(func2()),只会返回一个返回值
-- return func2()
-- end
-- print(MyFunc())
--可变参数类型的函数
-- function ArguementFun(...)
-- for i,v in ipairs{...} do
-- print(v)
-- end
-- end
-- ArguementFun(456,223,334,"aaa")
0 0
- LUA
- Lua
- LUA
- lua
- Lua
- lua
- lua
- lua
- lua
- lua
- lua
- lua
- Lua
- lua
- lua
- lua
- lua
- lua
- 每周学一点Egret(17) 为Egret wing添加一个动态QQ表情
- 国内SDK下载地址
- Xshell5连接centos6.5图形化桌面
- Eclipse luna 导入web项目出现 Target runtime Apache Tomcat v7.0 is not defined.
- Lantern专业版免费邀请码
- lua
- 地图与定位(LBS)-MapKit篇
- Android Studio 无线真机调试怎么弄?
- nginx前端+apache后端的服务器环境---Apache与Nginx的优缺点比较
- FMDB简介
- swift的默认构造器
- java Exception出错的栈信息打印到日志中
- 编程打印如下图形;
- 《ACM程序设计》书中题目X(拨错号码?)