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

云南网站建设哪家好网站备案怎么更改吗

云南网站建设哪家好,网站备案怎么更改吗,企业管理体系包含哪些内容,深圳注册公司需要什么资料文章目录 目的错误处理元表和元方法垃圾回收协程模块面向对象总结 目的 在前一篇文章#xff1a; 《Lua入门使用与基础语法》 中介绍了一些基础的内容。这里将继续介绍Lua一些更多的内容。 同样的本文参考自官方手册#xff1a; https://www.lua.org/manual/ 错误处理 下… 文章目录 目的错误处理元表和元方法垃圾回收协程模块面向对象总结 目的 在前一篇文章 《Lua入门使用与基础语法》 中介绍了一些基础的内容。这里将继续介绍Lua一些更多的内容。 同样的本文参考自官方手册 https://www.lua.org/manual/ 错误处理 下面代码可以直接测试相关内容 -- 使用 assert (v [, message]) 可以检查条件v如果失败则抛出错误信息message--[[ 使用 error (message [, level]) 抛出错误信息message level为1时默认值会在message头部添加调用error函数的位置信息 level为2时会添加调用error的函数被调用的位置信息 level为0时不添加额外信息。 ]]-- 使用 pcall() (f [, arg1, ···]) 执行函数并捕获可能的错误。执行无错误返回true否则返回false和错误对象。function func1(arg)error(arg) -- 抛出错误 endret, msg pcall(func1, hello naisu!) print(pcall: , ret, msg)-- xpcall (f, msgh [, arg1, ···]) 和pcall类似第二个参数为错误处理函数function func2()print(debug.traceback()) endret, msg xpcall(func1, func2, hello naisu!) print(xpcall: , ret, msg)元表和元方法 Lua中可以给值变量添加一个原表元表中可以是各种元方法。元方法用于改变该对象的默认行为比如该对象运算时的行为格式化输出时的行为等。 使用 setmetatable (table, metatable) 方法向 table 添加一个 metatable metatable 填 nil 时用于移除元表使用 getmetatable (object) 返回对象的原表。 常见的运算相关元方法如下 元方法运算元方法运算元方法运算元方法运算__add__sub-__mul*__div/__mod%__pow^__unm-__idiv//__band__bor|__bxor~(异或)__bnot~(非)__shl__shr__concat…__len#__eq__lt__le 除了上面一些基础的运算相关的元方法Lua中还有更多元方法下面是个基本的测试 --[[ 下面是__index ]] print(__index:)t1 setmetatable({ a22 },{ __index function() return 33 end})print(t1.a) print(t1.b) -- 访问不存在的元素t2 setmetatable({ a22 },{ __index { b33 }})print(t2.a) print(t2.b) -- 访问不存在的元素 print(t2.c) -- 访问不存在的元素--[[ 下面是__newindex ]] print(__newindex:)t3 setmetatable({ a22 },{ __newindex function (table, key, value) print(#table, key, value) end})print(t3.a) t3.b 33 -- 设置不存在的元素时会调用__newindex print(t3.b) -- __newindex是函数时值并不会设置到table中t4 setmetatable({ a22 },{ __newindex function (table, key, value) rawset(table, key, value * 2) end})print(t4.a) t4.b 33 -- 设置不存在的元素时会调用__newindex print(t4.b) -- rawset方法将新元素添加到table中t5 {} t6 setmetatable({ a22 },{ __newindex t5}) t6.b 33 print(t6.b) -- __newindex是表时设置不存在的元素值并不会设置到table中 print(t5.b) -- __newindex是表时设置不存在的元素值会设置到元表中--[[ 下面是__call ]] print(__call:)t7 setmetatable({ a22 },{ __call function (table, value) print(table.a, value) end})t7(33) -- __call方法会在把表当函数用的时候被调用--[[ 下面是__close ]] print(__close:)t8 setmetatable({ a22 },{ __close function (table) print(table.a) end})dolocal varclose t8 end -- close属性的变量会在退出其作用域时调用__close方法--[[ 下面是__tostring ]] print(__tostring:)t9 setmetatable({ a22 },{ __tostring function (table) return value: ..table.a end})print(tostring(t9)) -- __tostring方法会在使用tostring函数时被调用垃圾回收 Lua是带垃圾回收功能的通常不用手动去控制它如果有特殊需求的话可以使用 collectgarbage ([opt [, arg]]) 方法来手动控制垃圾收集器。比如使用 collectgarbage(collect) 进行一次完整的垃圾回收、使用 collectgarbage(count) 获得Lua占用的内存数据单位为1024字节。 另外如果一个表被其他表引用的话该表不会被回收可以用过弱表来处理该情况 t1 {}setmetatable(t1, {__mode k}) -- 设置表的key为弱类型k1 {} t1[k1] 22 k2 {} t1[k2] 33 k1 nil -- 将k1删除k1引用的那个表只存在于t1但t1是key弱引用所以这个表将被GCcollectgarbage() -- 强制执行一次GC for k, v in pairs(t1) do print(v) end协程 Lua中的协程和大多数语言中的协程差不多提供了一些协程创建、启动、挂起等方法协程需要主动交出控制权。 coroutine.create (f) 传入函数创建协程返回协程句柄coroutine.resume (co [, val1, ···]) 运行协程传入协程句柄和参数成功时返回true和返回值失败时返回false和错误信息coroutine.yield (···) 协程主动暂停输入的参数是传递给resume的返回值coroutine.close (co) 关闭协程coroutine.wrap (f) 传入函数创建协程返回函数调用该函数相当于调用resumecoroutine.isyieldable ([co])coroutine.running () 返回正在运行的协程加上一个布尔值当正在运行的协程是主协程时为true。coroutine.status (co) 下面代码是个简单的测试 function func()print(协同程序 func 开始执行)local value coroutine.yield(暂停 func 的执行)print(协同程序 func 恢复执行传入的值为: .. tostring(value))print(协同程序 func 结束执行) end-- 创建协同程序 local co coroutine.create(func)-- 启动协同程序 local status, result coroutine.resume(co) print(result) -- 输出: 暂停 func 的执行-- 恢复协同程序的执行并传入一个值 status, result coroutine.resume(co, 233) print(result) -- 输出: 协同程序 func 恢复执行传入的值为: 233模块 当需要多个文件组合实现功能时就涉及到模块的概念的简单理解就是一个文件引用其他文件 面向对象 Lua也支持面向对象的方式本质其实就是table中同时放变量和函数等。稍稍比table使用多一点的内容是可以使用 : 来定义个使用table中的函数这样这个函数内部默认会有一个指向自身的 self 对象。 下面代码可以直接测试相关内容 Class {}function Class:new(name) -- 注意这里内部的操作这个方法相当于构造函数obj {}setmetatable(obj,self)self.__index selfself.name namereturn obj endfunction Class:printName()print(self.name); endobj1 Class:new(naisu) -- 新建一个对象print(obj1.name) -- 使用 . 访问属性 obj1:printName() -- 使用 : 调用方法obj2 Class:new(nx233) obj2:printName()总结 上面的一些Lua的语法功能使得Lua更加灵活和完善不单单作为脚本进行大型项目开发也可一用。
http://www.hkea.cn/news/14261897/

相关文章:

  • 公司官网用什么建站程序计算机女生就业方向
  • 余杭门户网站wordpress快速建站视频教程
  • 上海网站推广费用深圳平面设计招聘
  • 网站首页样式51栗子
  • 买一个成品网站多少钱阿里云注销网站
  • 东莞设计网站建设方案电子商务网站的开发方式
  • 单位网站建设维护论文企业网页建设公司费用怎么收
  • 网站建设 外包是什么意思网站建设软件下载
  • 水果门户网站建设加强公司门户网站建设方案
  • 占酷设计网站官网入口the7 wordpress哪个好
  • 西安自助建站系统宣传页免费模板
  • 图书网站建设费用明细网站制作 常州
  • 设计师接单网站微软手机做网站服务器吗
  • 关于网站建设的问题鹤壁建设企业网站公司
  • 河南金城建设工程有限公司网站网站建设推销话术
  • 做镜像网站wordpress 自定义js
  • 网站建设需要提供功能目录吗免费wordpress主机
  • 建设网站企业哪家好漯河企业网站建设
  • 厦门电商网站建设有口碑的网站建设
  • 网站开发技术大学教材宁德市人社局
  • 网站的特效代码微信最火公众号排行
  • 无锡做网站优化价格上海软件系统开发公司
  • 网站建设与管理专业课程网站建立费用多少钱
  • 墓地网站建设价格媒体平台化
  • 网站搭建的费用嵌入式软件开发前景怎么样
  • 免费个人博客建站网站优化外包顾问
  • 做信息网站的盈利方式有哪些开发新闻类网站
  • 做网站的技术体系安装ss和wordpress
  • 一 网站开发背景做盗版漫画网站
  • 网站建网站建设seo帮帮您温州seo排名优化