当前位置: 首页 > news >正文

南京自助建站模板wordpress内容模板下载

南京自助建站模板,wordpress内容模板下载,wordpress直接上传视频网站,最好的编程培训学校lua语法 1.lua数据类型 lua 脚本输出乱码#xff0c;将lua脚本改为UTF-8编码#xff0c;并且需要DOS下修改代码页#xff1a;CHCP 65001 即可。 基本语法 注释 print(script lua win)-- 单行注释--[[多行注释]]--标识符 类似于#xff1a;java当中 变量、… lua语法 1.lua数据类型 lua 脚本输出乱码将lua脚本改为UTF-8编码并且需要DOS下修改代码页CHCP 65001 即可。 基本语法 注释 print(script lua win)-- 单行注释--[[多行注释]]--标识符 类似于java当中 变量、属性名、方法名。 以字母a-z,A-Z、下划线 开头后面加上0个或多个 字母、下划线、数字。 不要用下划线大写字母。 保留字。 总结一点按照正常思维命名即可。 全局变量 print(a) -- nil a1 print(a) anil --销毁a print(a)nil 没有任何有效值就是一个 nil。 可以用于删除 print(---delete---) -- 定义一个table myTab {key1value1,key2value2} for k,v in pairs(myTab) doprint(k.._..v) endprint(---after delete---) myTab.key1nil for k,v in pairs(myTab) doprint(k.._..v) endprint(---判断是否为nil) print(x) -- nil print((type(x)nil)) -- false print(type(x)nil) -- trueboolean lua会将false(false\nil) 看做是false 其他的都看做是 true其他都为true包括0 print(---boolean---)print(type(true)) -- boolean print(type(false)) -- boolean print(type(nil)) -- nilif false or nil thenprint(nil被当为true) elseprint(nil为false) -- false endprint(---测试0---) if 0 then print(0 是true) -- true else print(0 是false) endnumber 双精度8个字节。 print(---------测试number-------------) a 10 print(type(a))String 字符串用单引号或双引号来表示。 print(双引号字符串)print(单引号字符串)用 [[可以换行的字符串 ]] i [[我是中国人我爱我的祖国]]print(i)字符串和数字进行数学运算优先将 字符串 转 成 数字。 print(1 2) -- 3print(1 2) -- 3print(12) -- 12-- 非数字的字符串和数字进行计算则会报错-- lua: string.lua:1: attempt to perform arithmetic on a string value print(error1)字符串连接 -- error1 print(error..1)计算字符串长度(#字符串) testLenth abcdeprint(testLenth的长度为..#testLenth)table 类比成java当中数组map链表队列等。 table的key的索引从1开始。 print(---------测试 table-------------) tab1 {}tab2 {a,b,c}tab3 {key1value1, key2 value2} print(tab3-:) for k,v in pairs(tab3) doprint(k....v) end print(tab3:)tab1[a_key]a_value for k,v in pairs(tab1) doprint(k....v) end for k,v in pairs(tab2) doprint(k....v) end -- table的key的索引从1开始。 -- 1a -- 2b -- 3c-- 删除table中的元素 print(tab3-:) tab3[key2] nil for k,v in pairs(tab3) doprint(k....v) end print(tab3:)function 阶乘 function factorial(n)if n 0 thenreturn 1elsereturn n * factorial(n - 1)end end testFac factorial print(6的阶乘结果..testFac(6))匿名函数 print(------------匿名function-------------) -- 定义函数 function testPrint(tab, func)for k,v in pairs(tab) doprint(func(k,v))end end-- 定义数组调用函数 tab1 {a,b,c} testPrint(tab1,function(k,v)return k....vend )2.变量赋值 a 变量值。 print(---变量赋值---) a,b1,2 a 12 print(a,b) -- 3 2常用x , y y, x a,b,c1,2 print(a,b,c) -- 1 2 nil变量个数 值的个数按照变量的个数 补足 nil。 a,b,c 1,2,3,4 print(a,b,c) -- 1 2 3变量个数值的个数多余的值会被忽略。 a,b 1,2 function var() a nilb 3local c 4print(c) -- 4return a,b enda,b var() print(a,b,c) -- nil 3 nil多变量赋值还可以用于函数的返回, 参数值互换。 a,b func(); 需要赋值给变量如果能用局部变量尽量用局部变量。 3.索引 lua索引中的下标是从1开始的 对table中元素的访问。 tab[“key”] tab.key print(-----------索引--------------) tab {key1 中国,key2 美国} print(tab[key1]) -- 中国 print(tab.key2) --美国4.循环 用途做一些有规律的重复操作。 循环体一组被重复执行的语句。循环条件判断能否继续循环。 while循环 while(循环条件) do 业务代码 对循环条件的控制 enda 1 while(a5) doprint(a)a a1 endfor循环 数值for循环 for varexp1,exp2,exp3 do 循环体 endvar的值从exp1一直到exp2,步长是exp3(是可选的默认是1) print(----for----) for i1,10,2 doprint(i) -- 1 3 5 7 9 endexp1,exp2,exp3 只在循环开始前计算一次。 print(----for----) for i1,test(2) doprint(i) -- 1 2 3 4 end泛型for循环 是通过迭代器进行的。 a {one,two,three} for k,v in pairs(a) doprint(v) endrepeat until repeat 循环体 until(条件) 先执行循环体直到满足条件。如果条件为false继续执行循环体如果条件为true则跳出循 环。a 1 repeat a a1print(a) until(a5) print(a)--65.流程控制 if() print(-----------if-------------) a 1 if(a 1) thenprint(a..是1) end0 是 true。 6.函数 函数定义 print() 功能1。完成指定的任务。2。计算并返回值可以返回多个值。 函数的范围local 缺省 function 函数名称(参数列表)函数体return 结果end定义一个函数实现求两个数的最大值。 print(---------------函数定义求最大值---------------) function testMax(num1,num2)if (num1 num2) thenresult num1;elseresult num2;endreturn result; end print(15,20中的最大值是..testMax(15,20)) -- 20函数可以作为参数进行传递。 例子自定义打印函数。 print(---------------函数定义自定义打印函数---------------) myPrint function(p)print(重新的打印函数,p) end; myPrint(test); function add(num1,num2,myPrintParam)result num1 num2;myPrintParam(result); end add(2,3,myPrint)多值返回 print(---------------多值返回---------------) startIndex,endIndex string.find(www.llp.com,llp) print(startIndex , endIndex) -- 5 7例子找出一个数组中最大的值以及它的索引。 print(---------------找出数组中最大的值以及索引---------------) function testMax(a)local iIndex 1;local iValue a[iIndex];for i,v in pairs(a) doif v iValue theniIndex i;iValue v;endendreturn 最大值的索引..iIndex , 最大值是..iValue end print(testMax({1,4,8,2,7,10,6,3})) -- 最大值的索引6 最大值是10可变参数 例子求和 print(---------------可变参数求和---------------) function add1(...)local result 0;for i,v in pairs(...) doresult result v;endreturn result; end print(add1({1,2,3,4,5})) -- 这里传入的是一个固定的数组这个参数只有一个不是可变的。 function add1(...)local result 0;for i,v in pairs({...}) doresult result v;endreturn result; end print(add1(1,2,3,4)) -- 这样才是可变的如何确定可变参数的数量用# 例子求平均数 print(---------------可变参数求平均数---------------) function average1(...)local result 0;arg {...}for i,v in pairs(arg) doresult result v;endnum #argprint(参数的个数: ..num) -- 6return result / num; end print(average1(1,2,3,4,5,6)) -- 3.5用select获取可变参数的数量 function average1(...)local result 0;arg {...}for i,v in pairs(arg) doresult result v;endnum select(#,...)print(个数是..num) -- 5return result / num; end print(average1(1,2,3,4,5)) -- 3函数的参数中有固定参数也有可变参数。固定参数写前面。 例子固定参数和可变参数结合。用某个格式输出可变参数。 print(---------------固定参数和可变参数结合---------------) function fmtPrint(fmt,...)io.write(string.format(fmt,...)) end fmtPrint(%d\t%d\n%d,2,3,4)选取可变参数的值 print(---------------选取可变参数中的值---------------) function testSelect(...)a,b,c select(3,...)print(a,b,c) -- 3 4 5 end testSelect(1,2,3,4,5)7.运算符 算术运算符 加 - 减 * 乘 / 除 % 取余 ^ 乘幂 - 负号关系运算符 等于。 ~不等于大于小于大于等于小于等于逻辑运算符 and or not其他运算符 .. 连接符 # 计算字符串或者 表 的长度。8.数组 数组相同元素的集合。 索引用整数表示从1开始。 print(------多维数组--------) testArray2 {} for i1,3,1 dotestArray2[i]{}for j1,2,1 dotestArray2[i][j] i*jend endfor i1,3 dofor j1,2 doprint(testArray2[i][j])endprint(------) end9.迭代器 泛型 for 迭代器 a {a,b,c} for k,v in pairs(a) doprint(k,v) enda {a,key2b,c} for k,v in ipairs(a) doprint(k,v) endpairs会遍历所有key和值。 ipairs只会从1开始步长是1中间不是数字作为key的元素会被忽略一直到第一个不连续的数 字索引为止不含。适合遍历数组。 for迭代器的结构 for 变量列表 in 迭代函数 状态常量控制变量 do 循环体 end print(-------迭代器的定义例子--------) -- 求平方 1-9的平方 function square(iteratorMaxCount,currentNumber)if currentNumber iteratorMaxCount thencurrentNumber currentNumber 1return currentNumber,currentNumber*currentNumberend endfor i,n in square ,9,0 do print(i,n) end10.table a {key1“a”,key2“b”} 不能用nil做索引。 -- table -- 初始化 myTable {} myTable[1] 1 -- 删除 myTable nil print(--------------------) myTab {} print(myTab的类型是..type(myTab)) myTab[1]1号元素 myTab[a]a元素 print(myTab[1]的元素是..myTab[1]) print(myTab[a]的元素是..myTab[a]) -- 将myTab赋值 newMyTab myTab; print(newMyTab[1]的元素是..newMyTab[1]) print(newMyTab[a]的元素是..newMyTab[a]) -- 修改元素 newMyTab[a]新值 print(myTab[a]的元素是..myTab[a]) print(newMyTab[a]的元素是..newMyTab[a]) -- 置为nil myTab nil print(myTab) print(newMyTab[1]的元素是..newMyTab[1]) print(newMyTab[a]的元素是..newMyTab[a])myTab的类型是table myTab[1]的元素是1号元素 myTab[a]的元素是a元素 newMyTab[1]的元素是1号元素 newMyTab[a]的元素是a元素 myTab[a]的元素是新值 newMyTab[a]的元素是新值 nil newMyTab[1]的元素是1号元素 newMyTab[a]的元素是新值11.模块 模块的定义 从lua5.1开始引入了模块机制把一些公用的代码放到文件中通过api的方式让其他程序调用这个文件就是一个模块。 类似于java中的jar包。 lua中的模块其实是一个table由 变量、函数等已知的 lua元素组成。最后在模块的结尾需要返回一个table。 如何编写模块 文件名module.lua -- 模块 :module.lua module {} module.constant 模块中的常量 function module.func1()print(这是函数1) end -- 这块注意 module不能写。私有函数外部是无法访问的需要通过其他公共的函数进行调用 local function func2()print(这是私有函数2) end function module.func3()func2() end -- 返回表 一定要注意返回table return modulerequire函数 前面我们定义好了一个模块那么模块应该如何调用呢引入模块有如下两种方式 require(“模块名”) require “模块名” -- 调用模块 require(module) print(module.constant) module.func3()12.元素 元表的定义 允许我们改变table的行为。 setmetatable(普通表元表) -- 元表 a {a,b,c} -- 普通表 b {} --元表 c setmetatable(a,b) print(------------------------) f {} print(f:,f) d setmetatable({c,d},f) print(d[1]) e getmetatable(d) print(e:,e)index元方法 __index (两个下划线) 定义普通表 p。 给普通表p设置元表y而元表y中有__index__index一个表 ii中有 我们访问的那个不存在的key。 __index表 print(-------------测试__index---------------) -- 普通表 tab1 {a,b,c} print(tab1[5]) -- nil -- 普通表有一个元素 5e newTab {} newTab[5] e metaTab1 {__indexnewTab} setmetatable(tab1, metaTab1) print(tab1[5]) -- e--index函数(表key) -- 普通表 tab1 {a,b,c} print(tab1[5]) -- nil print(原始的tab1:,tab1) -- 原始的tab1: table: 00CF92E0 metaTab1 {__indexfunction(tab, key )print(参数当中的tab:,tab) -- 参数当中的tab: table: 00CF92E0print(参数当中的key,key) -- 5if(key 5) thenreturn index--5endend } setmetatable(tab1, metaTab1) print(tab1[5]) -- index--5请求表中key的值 先在普通表中找有返回没有看元表。 如果元表有__index, 且 __index中有对应的key。 如果没有继续找__index的function。 newindex元方法 对表进行更新时调用 函数用法 print(-----------newindex--------------) mytab2 {a,b} metatab2 {__newindex function(tab, key ,value)print(被调用) -- tab[key] valuerawset(tab,key,value) --给table的key赋value的值end } setmetatable(mytab2,metatab2) mytab2[3]c print(mytab2[3]) -- c表 mytab2 {a,b} mytab21 {} metatab2 {__newindex mytab21 } setmetatable(mytab2,metatab2) mytab2[3]c print(mytab2[3]) -- nil print(mytab2[3]) -- nil为表添加操作符 加法操作 print(-------------操作符------------) tab3 {1,2} tab4 {a,b,c} metatab3 {__add function(tab1,tab2)local m #tab1for k,v in pairs(tab2)dom m1tab1[m] vendreturn tab1end } setmetatable(tab3,metatab3) v tab3 tab4 print(v) for k,v in pairs(v) doprint(k,v) end__add: __sub: - _mul:* __div: / __mod: % __concat: … __eq: __lt: _le: call元方法 lua中当表被当成函数调用时会触发。 print(-----------call-------------) tab_a1 {a,b} print(tab_a1原始值,tab_a1) tab_a2 {1,2} metatab_a {__call function(tab, ...) local a {...} for k,v in pairs(a) do print(v) end end } setmetatable(tab_a1,metatab_a) result tab_a1(6,7,8)tostring 用于修改表的输出行为。类似于java中的toString。 print(-----------call-------------) tab_a1 {a,b,c,d} print(tab_a1原始值,tab_a1) tab_a2 {1,2} metatab_a {__call function(tab, ...)local a {...}for k,v in pairs(a) doprint(v)endend,__tostring function(tab)local str for k,v in pairs(tab) dostr str..v..,endreturn strend } setmetatable(tab_a1,metatab_a) -- result tab_a1(6,7,8) print(tab_a1)ps每个元方法之间 用 , 13.协同程序 类似于 多线程的概念。 协程和线程的区别 一个多线程的程序可以同时运行多个线程。而协程呢在某个时刻只有一个协程在运行。 线程由cpu调度协程由代码调度。 创建协程并运行 -- 定义协程 testAdd coroutine.create(function(a,b)print(ab) --3end )-- 启动协程 -- 原来暂停-》执行原来执行-》暂停 coroutine.resume(testAdd, 1,2)wrap,这种方式运行协程只需要调用就可以执行 co coroutine.wrap(function(a)print(参数值是..a)end ) co(2)启动、停止 testAdd coroutine.create(function(a,b)print(执行--子方法,ab)coroutine.yield();print(执行--子方法,a-b)end ) coroutine.resume(testAdd, 1,7) -- 8 print(执行主方法) coroutine.resume(testAdd) -- -6返回值 testAdd coroutine.create(function(a,b)print(协程执行,ab)coroutine.yield()return ab,a-bend ) r1,r2,r3 coroutine.resume(testAdd, 1,7) print(返回值,r1,r2,r3) r1,r2,r3 coroutine.resume(testAdd, 1,7) print(重新执行返回值,r1,r2,r3)协程状态 testAdd coroutine.create(function(a,b)print(运行中 协程状态,coroutine.status(testAdd))coroutine.yield() -- 放弃协程return ab,a-bend ) print(刚定义好的协程状态,coroutine.status(testAdd)) r1 coroutine.resume(testAdd,1,4) print(启动协程结果,r1) print(最终的 协程状态,coroutine.status(testAdd)) print(yield后 协程状态,coroutine.status(testAdd)) r1 coroutine.resume(testAdd,1,4) print(二启动协程结果,r1) print(二最终的 协程状态,coroutine.status(testAdd)) r1 coroutine.resume(testAdd,1,4) print(三启动协程结果,r1)结果 刚定义好的协程状态 suspended 运行中协程状态 running 启动协程结果 true 最终的协程状态 suspended yield后协程状态 suspended 二启动协程结果 true 二最终的协程状态 dead 三启动协程结果 false协程协作 协程唯一标识 -- 协程内外部协作的例子 function foo(a)print(foo 参数,a)return coroutine.yield(a*2) end co coroutine.create(function(a,b)print(第一次启动协程参数,a,b)local r foo(a1)print(第二次启动协程参数,r)local x,y coroutine.yield(ab,a-b)print(第三次启动协程参数,x,y)return b,协程结束啦end ) print(主程序,coroutine.resume(co,1,5)) print(----分隔符---) print(主程序,coroutine.resume(co,r)) print(----分隔符---) print(主程序,coroutine.resume(co,x,y)) print(----分隔符---) print(主程序,coroutine.resume(co))协程内部和外部协作的例子 第一次resume传入的参数是 function的参数。 第一次yield的参数是第一次resume的返回值。 第二次resume的参数是第一次yield的 返回值。 生产者消费者问题 思路 生产者生产完 产品自己停下来等待消费者消费。消费者消费完产品自己停下来等待生产者生产。 -- 生产者和消费者 function productor()-- 定义生产的商品用数字来替代local i 0while i100doi i1print(生产了,i)-- 通过协程实现coroutine.yield(i)end endfunction consumer()while truedo-- 从生产者获取产品local status,result coroutine.resume(po)print(消费了,result)if (result 99) thenbreakendend end -- 程序开始 po coroutine.create(productor) consumer()14.错误处理 语法错误 -- 错误处理 a10 for a 1,10 print(a) end程序无法运行。 运行错误 错误处理 assert和error assert: 第一个参数为true不输出第二个参数。 第一个参数为false输出第二个参数。 function add(a,b)assert(b,b是nil) end add(1)error function add(a,b)if(b2) thenerror(报error了)endprint(正常执行) end add(1,2)当error或assert触发错误时程序退出。 错误处理pcall pcall(要执行的函数函数需要的参数) 如果函数执行没问题返回true 如果函数执行有问题返回false。 function add(a,b)c abprint(正常执行) end if pcall(add,1) thenprint(add 正常) elseprint(add 错误) end print(主程序)--运行结果 add 错误 主程序错误处理xpcall function testXpcall()c 1nil end function testErrorHandle(error)print(我来处理错误,error) end xpcall(testXpcall,testErrorHandle)15.面相对象 对象属性、方法。 tablefunction。 student {name 张三,age 18, gotoSchool function(name)print(name..上学) end} --[[ 下面两种方式也是支持的 student.gotoSchool function(name)print(name..上学) end function student.gotoSchool(name)print(name..上学) end ]]-- print(学生姓名..student.name..,年龄是..student.age) student.gotoSchool(student.name)技巧冒号 1。类比一个类实例化多个对象。 Student {name默认名称} function Student:new()s {}setmetatable(s,{__index self})return s ends1 Student:new() s2 Student:new() s1.name张三 s2.name李四 print(s1.name) print(s2.name)
http://www.dnsts.com.cn/news/9805.html

相关文章:

  • 做网站为什么需要服务器网站建设要求报告
  • 浙江省城乡和住房建设厅网站设计建设网站公司网站
  • 网站开发支持上传gif本溪网站开发
  • 手机网站域名查询网页升级访问未成年
  • 企业网站和展板建设wordpress 个人设置
  • 网站怎么做响应式温州企业网站制作
  • 建设一个网站需要哪些员工广州app客户端开发
  • asp 免费网站模板扫黄打非网站建设
  • 一个网站多个域名的seo优化移动应用开发专业
  • 搜索的网站后大拇指分享数量不见了长沙网站建设索王道下拉
  • 外国服务器的网站西宁网站建设西宁
  • 网站搭建软件d北京做视觉网站
  • 网站建设东莞长安镇微信群投票网站怎么做
  • 怎么分析竞争对手网站做家教的正规网站
  • 修改dns连接外国网站怎么制作小视频
  • 要个网站哪里有做网站的单位
  • 承接网站建设广告语广州市平安建设 网站
  • 有没有什么网站专门帮人做问卷wordpress 轻论坛
  • 网站宣传工作ui设计周末培训学校
  • 建设企业网站的好处是什么h5网站设计方案
  • 网站建设培训班南宁苏州苏州设计公司
  • 用自己的电脑做服务器建网站名人朋友圈网页版qq登录入口
  • 做旅游的海报图片网站上海好的网站设计公司有哪些
  • 餐饮网站建设公司黄骅港赶海攻略
  • 网站怎么显示建设中房产信息网上自助查询
  • 怎么做电力设计公司网站长图片生成器在线制作
  • 北京建设高端网站进贤网站建设
  • 医院网站HTML5把asp.net写的网站别人怎么访问
  • 太仓智能网站开发墨刀做网站上下滑动的交互
  • 用npp做网站网站备案号是什么意思