lua的C库】的更多相关文章

前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across metamethod/C-call boundary"的错误(据悉主线程中调用yield也会如此). 于是就想使用5.2以上的版本试试;windows下没有5.2以上的版本,又不愿意使用VS编译出lua.exe;就在网上搜索下了关于使用命令行生成lua的静态库.动态库.lua.exe和luac.exe资…
luna工具库 概述 luna库提供了几个lua开发的常见辅助功能: lua/c++绑定 lua序列化与反序列化 变长整数编码,用于lua序列化,当然也可以方便的用于其他场合 这里把代码编译成了动态库,由于代码非常简单,实际使用时也可以简单的复制文件到自己的工程.lua_archiver引用了lz4库用于数据压缩(lz4.h+lz4.c). lua/c++绑定库(luna.h, luna.cpp)支持Windows, Linux, macOS三平台,默认的luna.h实现需C++14支持.如果编…
目录结构 LuaSocket 是 Lua 的网络模块库,它可以很方便地提供 TCP.UDP.DNS.FTP.HTTP.SMTP.MIME 等多种网络协议的访问操作. 它由两部分组成:一部分是用 C 写的核心,提供对 TCP 和 UDP 传输层的访问支持.另外一部分是用 Lua 写的,负责应用功能的网络接口处理. 一.安装LuaSocket 下面介绍两种安装方法 第一种方法:如果你有安装了 Lua 模块的安装和部署工具 LuaRocks,那么一条指令就能安装部署好 LuaSocket: # lua…
在云风的ejoy2d里是没有dll和so之类的东西的, 所有的C扩展都是类似这样写的: int ejoy2d_shader(lua_State *L) {      luaL_Reg l[] = {           {"load", lload},           {"unload", lunload},           {"draw", ldraw},           {"blend", lblend},  …
标准string库 基础字符串函数 string.len(s) 返回一个字符串的长度,例如 string.rep(s, n) 返回一个新的字符串,该字符串是参数s重复n次得到的结果,例如 )) -- gogogo string.lower(s) string.upper(s) 字符串大小写转换,例如 print(string.lower("gOogLe")) -- google print(string.upper("gOogLe")) -- GOOGLE stri…
标准table库 table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写,table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,元素间以指定的分隔符(sep)隔开.除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符,start的默认值是1,end的默认值是数组部分的总长. sep, start, end这三个参数是顺序读入的,所以虽然它们都不是必须…
一.前提要了解一下lua 的string几个方法 1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,... 2. string库中所有的function都不会直接操作字符串,而是返回一个结果 string.len(s):返回字符串的长度. string.lower(s):变小写. string.upper(s):变大写. string.rep(s,n):将s拷贝n份,并连接起来,返回. string.sub(s,i [,j]):取s中从i开始到j为止的自字符串.…
这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1. table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定…
lua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库.lua的string函数导出在string module中.在lua5.1,同一时候也作为string类型的成员方法,因此,我们既能够写成string.upper(s), 也能够s:upper(),选择你喜欢的写法. string.len(s)返回s的长度. string.rep(s, n)返回反复s字符串n次的字符串. string.lower(s)返回一份已将大写转成小写的字符串s的拷贝  lower,…
[前言] 在<Lua中的一些库(1)>中也说到了,要对string库的模式匹配进行单独的讲解.对于字符串的处理,对于任何语言的学习来说,都是一个难点,而且也是一个必会的知识点.给你一个字符串,让你按照某种需求进行处理,你不会,那是多么尴尬的一件事情.所以,看完<Lua中的一些库(1)>和这篇文章之后,我争取做到让你在处理字符串时,不再感到捉襟见肘,不再尴尬. 说到Lua中的模式匹配,基本上就是围绕着以下几个函数展开的: find: match: gsub: gmatch. 我的总结…
table属性 table库是有一些辅助函数构成的,这些函数将table作为数组来操作. 当中.有对列表中插入和删除元素的函数,有对数组元素进行排序的函数.还有对链接一个数组中全部字符串的函数. 0.table.getn()Lua 中我们常常假定 array 在最后一个非 nil 元素处结束. 也就是nil值后的元素不读取 这个传统的约定有一个弊端:我们的 array中不能拥有 nil 元素. 对大部分应用来说这个限制不是什么问题.比方当全部的 array 有固定的类型的时候. 但有些时候我们的…
#include <iostream> #include <string.h> extern "C" { #include "lua-5.2.2/src/lua.h" #include "lua-5.2.2/src/lauxlib.h" #include "lua-5.2.2/src/lualib.h" } //定义库函数 static int l_dir(lua_State* L) { } stati…
标准os库 os.rename(oldname, newname) 文件重命名: os.remove(filename) 删除一个文件 os.execute(cmd) os.execute可运行一条系统命令,类似于C语言的system函数. os.execute("mkdir /tmp/cq") os.exit(code) 中止当前程序的执行,code参数默认值为true. os.getenv(variable) 返回环境变量的值,如果不存在,返回nil. print(os.geten…
lua提供了一些辅助函数来操作table. 比如,从list中insert和remove元素,对array的元素进行sort.或者concatenate数组中的全部strings.以下就具体地解说这些方法. insert and remove table.insert将一个元素插入到指定位置.比如: t = {1, 2, 3} table.insert(t, 1, 4} t的结果将是{4, 1, 2, 3} insert的第二个參数是能够省略的.这样就会插入到数组的最后,从而不必移动其它元素.相…
lua支持的所有字符类 .      任意字符 %a   字母 %c 控制字符 %d 数字 %l         小写字母 %p  标点字符 %s 空白符 %u        大写字母 %w   字母和数字 %x    十六进制数字 %z   代表0的字符 上面字符类的大写形式标识小写所代表的集合的补集,例如:%A代表非字母的字符. print(string.gsub("hello, up-down!", "%A", ".")) ---> …
函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j]]]) table.sort(table[, comp]) 1. insert 和 remove 只能用于数组元素的插入和移出, 进行插入和移出时,会将后面的元素对齐起来.     所以在 for 循环中进行 insert 和 remove 的时候要注意插入和移除时是否漏掉了某些项:        …
table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下: (1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串; (2).table 的默认初始索引一般以 1 开始; (3).table 的变量只是一个地址引用,对 table 的操作不会产生数据影响; (4).table 不会固定长度大小,有新数据插入时长度会自动增长; (5).table 所有索引值都需要用 “[“和”]” 括起来:如果是字符串,还可以去掉引号和中括号: 即如果没有[]括起,则认…
read函数从当前输入文件读取串,由它的参数控制读取的内容: "*all”             读取整个文件 "*line"            读取下一行 "*number"     从串口中转换出一个数值 num               读取num个字符到串 io.read("*all")函数从当前位置读取整个输入文件,如果当前位置在文件末尾,或者文件为空,函数将返回空串. io.read("*line"…
1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个字符.Lua中,第一…
Lua字符串库小集 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个…
转载地址:http://www.yiibai.com/lua/lua_standard_libraries.html Lua的标准库提供了一组丰富的功能,与C的API直接实现,建立在Lua编程语言函数.Lua编程语言中这些库提供服务,还提供外部服务,如文件和数据库操作. 建于官方的C的API,这些标准库是作为单独的C模块.这包括: 基本库,其中包括协程分库 模块库 字符串操作 表操作 数学库 文件输入和输出 操作系统工具 调试设备 基本库 我们使用的基本库根据遍及不同主题的教程.下表提供了所有相…
1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个字符.Lua中,第一…
类Python的List lua的优美之处在于把数组和关联数组都用table实现了(Python中叫list和dict,C++中叫vector和map). 一般我们把数字索引的table叫做list.penlight里的List模仿了Python,看起来从Python借鉴是个好主意. 下面是一个List的例子,List实现了__tostirng,因此可以输出自己.  ) ),},}{,,,},){,,,,} ,,,} )  ) true > = l:reverse()  ---> note: …
OpenResty / Nginx模块,Lua库和相关资源的列表 什么是OpenResty OpenResty是一个成熟的网络平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库,许多高质量的第三方Nginx模块以及大多数外部依赖项.它旨在帮助开发人员轻松构建可伸缩的Web应用程序,Web服务和动态Web网关. 通过利用各种精心设计的Nginx模块(其中大部分由OpenResty团队自己开发),OpenResty有效地将nginx服务器转变为功能强大的Web应用服务器,其中W…
原文地址http://www.freecls.com/a/2712/f lua的string库是用来处理字符串的,基础函数如下 string.byte(s [, i [, j]]) string.byte是用来把字符转换成ascii数字,s为目标字符串,i为索引开始位置(从1开始),j为索引结束位置 string.char(...) string.char是把ascii数值转换成字符 例子 --默认为第1个返回a的ascii值    local r = string.byte('abcdefg'…
L1[math]01. 取绝对值 L1[math]02. 三角函数 小知识:注意 lua下三角函数用的参数是弧度 而不是角度 弧度=角度*pi/180  -->弧度角度换算公式  lua的math库里面也有 弧度和角度转换的2个函数 也可以直接使用   math.rad (x) math.deg (x) 我们要求30度的sin值  那么 print(math.sin(30*math.pi/180)) 小知识:知道半径和圆心 如何遍历出圆上的所有点 对于常见的鼠标轨迹 还是有点用处的 圆心坐标(x…
Step By Step(Lua字符串库) 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取…
最近要进行系统升级,后台的数据是根据城市区分的.担心新系统的稳定性及新数据的准确性,计划部分城市采用新接口.接口的入参里没有城市信息,只有经纬度坐标,需要调用一个thrift接口来根据坐标获取城市信息. 如果直接修改代码逻辑,则会造成新旧版本的耦合,不仅完全上线时要再次修改,而且还要增加一次测试流程,这样成本就有些高了.这时就想到能不能用nginx+lua对新旧版本接口做灰度发布. 步骤: 1.安装thrift 2.生成客户的代码  3.编译lua调用thrift需要的库 4.实现客户端代码 5…
-- 类型 和 值--[[ 8中类型 滚动类nil.boolean. number.string.userdata.function.thread 和 table.]] print (type("Hello World"))print (type(10.4*3))print (type(print))print (type(print))print (type(true))print (type(nil))print (type(type(x))) --变量没有预定义的类型,每一个变量…
lua的优点: 可移植性 容易嵌入 体积小 高效率 这些优点都来自于lua的设计目标:简洁.从Scheme获得了很多灵感,包括匿名函数,合理的语义域概念   lua前身: 巴西被禁运,引入计算机软件和硬件受限,巴西人有强烈的民族情绪去创造自己的软件.三名作者都是同一个实验室Tecgraf的,这个实验室与很多工业实体有合作关系.成立的头十年,重点是创造交互性的图形软件,帮助合作伙伴进行设计.巴西石油公司是其中一个重要伙伴.有大量的遗留数据需要处理.于是诞生了DEL,一个领域专用语言,主要用来描述数…