lua
戴磊freecls
这个作者很懒,什么都没留下…
展开
-
lua获取utf8(包含中文字)字符串长度
原文地址http://www.daileinote.com/computer/lua/01lua自带的string库计算字符串长度是以字节来算的,所以一个中文字一般会占用1-4个字节string.len('测试abc')返回的不是5而是大于5,如果想要实现中文字占1个长度,则要引入lua-utf8库本人用的是centos7,可以直接敲如下命令就行luarocks install...原创 2018-05-10 10:51:37 · 2923 阅读 · 0 评论 -
lua模拟面向对象编程
原文地址http://www.daileinote.com/computer/lua/14lua中跟对象和类最像的就是表格有方法和属性,所以类和对象都只能用表格来模拟声明一下,其实表格的功能已经能应付大部分场景了,而且lua脚本语言本就不是面向对象语言(它的优势是轻量级简单快速),硬要模拟面向对象有时候会搞得不伦不类,所以以下只为学习,不建议应用到正式环境。例子--声明一个基类Web...原创 2018-05-11 19:42:22 · 364 阅读 · 0 评论 -
lua元表
原文地址http://www.daileinote.com/computer/lua/13lua元表其实就是为了扩展表格间的运算,比如之前我们如果让2个表格相加就会报错,一旦我们设置了元表并加上了__add属性,那么就会正常执行。先看2个元表相关的函数setmetatable(table,metatable)将metatable设置为table的元表并返回table,如果metata...原创 2018-05-11 14:03:13 · 572 阅读 · 0 评论 -
lua模块编写
原文地址http://www.daileinote.com/computer/lua/12lua允许我们编写自定义模块以便后面调用,在编写模块之前我们先认识2个知识点1.lua语言中数组,模块其实都是table表格。2.在之前的lua基本语法里我们知道函数是可以赋值给变量的好,我们新建一个文件my.lua代码如下local my = {}my.name = '沧浪水'my.u...原创 2018-05-11 14:02:01 · 1142 阅读 · 1 评论 -
lua基本语法
原文地址http://www.daileinote.com/computer/lua/11变量1.变量无需声明2.变量没声明为nil,赋值为nil等同于删除3.lua把nil,false视为假,其他都为true4.Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量5.#ta字符串的长度,也可以获取表格数字索引对应的个数例子--全局赋...原创 2018-05-11 14:01:02 · 165 阅读 · 0 评论 -
lua基础函数 type,tonumber,tostring,pcall,print
原文地址http://www.daileinote.com/computer/lua/10type(v)用来判断v的类型返回字符串"nil", "number", "string", "boolean", "table", "function", "thread", "userdata"tonumber(e [,base])把e(必须为数字或者是可以转成数字的字符串)转成10进...原创 2018-05-11 13:59:31 · 33311 阅读 · 1 评论 -
lua ipairs pairs
原文地址http://www.daileinote.com/computer/lua/09这两个函数都是用来遍历表格数组的,区别如下:iparis只会遍历数字索引,并在遇到第一个非数字索引时终止paris则会遍历所有例子 local t = {22,33,44,name='沧浪水',url='www.freecls.com',55,66}t[10] = '100'for...原创 2018-05-10 13:10:00 · 255 阅读 · 0 评论 -
lua 基本函数dofile loadfile loadstring
原文地址http://www.daileinote.com/computer/lua/08dofile([filename])如果提供了filename则打开读取里面内容并以代码块方式执行,没提供则从标准输入stdin读取并执行。如果报错,错误会上传到到调用者(运行在非保护模式)例子新建aa.lua--aa.luaurl = 'www.freecls.com'local n...原创 2018-05-10 12:42:02 · 835 阅读 · 0 评论 -
lua assert collectgarbage
原文地址http://www.daileinote.com/computer/lua/07assert (v [, message])断言,主要是用来输出错误当v为false或nil时,message可选默认为assertion failed当v为true时返回v,和message两个参数例子assert(1>10)--输出如下--[[lua: tmp.lua:1: a...原创 2018-05-10 12:01:28 · 483 阅读 · 0 评论 -
lua require模块加载机制
原文地址http://www.daileinote.com/computer/lua/06调用模块步骤当我们调用require"modname"1.会去检查package.loaded表格是否已经加载过,如果已经加载过直接返回,所以重复加载同一个模块多次只会加载1次2.如果package.loaded表格没有此模块记录,则会到package.path指定的路径中搜索lua文件,如果...原创 2018-05-10 11:02:06 · 5578 阅读 · 1 评论 -
lua os(操作系统)库
原文地址http://www.daileinote.com/computer/lua/05lua os库提供了简单的跟操作系统有关的功能os.clock()返回当前当前cpu使用的秒数例子--用来计算中间的遍历花费了多少cpu时间local x = os.clock()local s = 0for i = 1, 10000000 do s = s + i endpr...原创 2018-05-10 10:59:29 · 9781 阅读 · 1 评论 -
lua io库(输入输出)
原文地址http://www.daileinote.com/computer/lua/04lua io库提供了2种模式来文件处理1.简单模式-所有操作会在2个当前文件(默认为标准输入stdin,标准输出stdout)2.完全模式-基于文件句柄,功能丰富一点简单模式--接收任意个参数,默认写到标准输出stdoutio.write('www', '.','freecls','.','...原创 2018-05-10 10:57:30 · 6535 阅读 · 0 评论 -
lua数组表格处理(table库用法)
原文地址http://www.daileinote.com/computer/lua/03table库由一些基本函数组成来以数组的形式(也就是只能处理数字下标的元素)处理表格包括插入移除排序连接所有元素为字符串table.insert (table, [pos,] value)插入数据,pos为插入的位置,省略pos默认从表格最后插入例子local res,tt = {...原创 2018-05-10 10:55:11 · 1994 阅读 · 0 评论 -
lua字符串处理(string库用法)
原文地址http://www.daileinote.com/computer/lua/02lua的string库是用来处理字符串的,基础函数如下string.byte(s [, i [, j]])string.byte是用来把字符转换成ascii数字,s为目标字符串,i为索引开始位置(从1开始),j为索引结束位置string.char(...)string.char是把as...原创 2018-05-10 10:53:43 · 75247 阅读 · 0 评论 -
lua coroutine(协程)
原文地址http://www.daileinote.com/computer/lua/15协程相关的文章网上有很多,众说纷坛,相比其他技术概念理解起来没那么直接。因为协程涉及了很多底层高并发概念,没接触过操作系统调度,C语言等底层知识根本不可能完全理解。备注:以下我说的单进程就是指一个进程一个主线程1.协程跟linux c里的epoll很像,都是单进程非阻塞的(也就是没有io等待,单核c...原创 2018-05-12 13:26:39 · 1181 阅读 · 0 评论