LUA - 技术教程文章

静态检查lua语法工具luacheck

关于lua的静态检查工具很多,这里着重介绍两种方法: 1、luac.exe 也就是lua的编译器,安装完lua的编译器之后,将自己的代码进行编译这是最好不过的静态检查,当然编译器由于参数的设置,对很多告警并不敏感。所以推荐第二种方法。 2、luacheck 这是google推出的一款针对lua静态检查的开源工具,其安装简单,操作容易,检查严格,参数可控,很适合项目的lua开发。工具下载及安装:https://github.com/mpeterv/luacheck 我强烈建议你...

Leetcode - Evaluate Reverse Polish Notation

初看貌似有点复杂,可是搞懂了很easy,就一个简单的栈应用,每次遇到计算符号"+", "-", "*", "/"就将栈顶端两个数字出栈,计算后再将结果压栈就可以。。#include<iostream> #include<vector> #include<stack> using namespace std;class Solution { public:int evalRPN(vector<string> &tokens) {stack<int> stack;for (int i = 0; i < tokens.size(); i++){if (tokens[i] == "*" || tokens[i] == "-" || tokens[i] == "+" || toke...

cws_evaluation v1.1 发布,中文分词器分词效果评估对比

cws_evaluation是一个Java开源项目,用于对中文分词器的分词效果进行评估对比,目前支持9大中文分词器。分别是:word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器、jcseg分词器、fudannlp分词器、smartcn分词器、jieba分词器、stanford分词器。在1.1中,将9大中文分词器都升级到了最新版本,并采用Maven构建项目,增加了方便用户的运行脚本,且新增了交互式分词效果对比功能,同时也对分词代码做了优化和改进。更多细节参...

cocos2dx-3.x 导出自定义类到 lua 过程【代码】【图】

一、简介最近正在学习cocos2d中的lua游戏开发,因为lua开发的热更新特性,大家开发游戏好像都会优先选择lua作为开发语言。但是遇到一个问题,用lua写一些简单的程序没什么问题,但是一旦需要一个复杂的类,在lua中直接写就感觉有些吃力。所以想到,可以把游戏开发中比较复杂的模块使用c++完成,然后导出到lua,让lua可以轻松调用。我从头到尾完整地完成了cocos2dx-3.x中自定义类的导出过程,在网上查了好多资料,也碰到了很多错误,...

msvs命令行编译lua5.3.4【代码】

msvs命令行编译lua5.3.4 vslua.bat@echooffmd bin md lib md include cd srccl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE l*.c ren lua.obj lua.o ren luac.obj luac.o lib /OUT:lua53.lib *.obj copy lua53.lib ..\lib\lua53.lib del *.o *.obj *.exp *.lib *.dll *.execl /c /nologo /W3 /O2 /Ob1 /Oi /Gs /MD /D_CRT_SECURE_NO_DEPRECATE /DLUA_BUILD_AS_DLL l*.c ren lua.obj lua.o ren luac.obj luac....

lua实用库

math: sin.asin.deg… 随机数:math.random()无参数时生成[0,1)的随机数,整数参数的话生成[1,参数]的整数随机数;math.randomseed(seed) 使用种子生成随机数table: t = {10, 20, 30} table.insert(t, 1, 15) t 就变成了{15, 10, 20, 30} 如果没有第二个参数,就自动添加到table末尾 table.remove(t, 1) t 就变回了{10, 20, 30} table.sort(tablename,sortfunc) 排序,第二个参数是一个函数有两个参数,返回true或false...

游戏资源自动转换成Lua表【代码】

关于这个问题,几年前已经做过一个工具,自动导出成一个c++的struct,然后用vector存储这些数据,然而在实践中发现在遇到多层嵌套时,这种数据表现是非常乏力的。比如掉落表会配多个掉落物,每个掉落物都有数量、概率等。那么最好是将物品ID,数量,概率设置为一个struct然后用一个vector存储,而不是用drop_id1, drop_id2, drop_num1,drop_num2来表示,类似这样的情况是很常见的。后来工作中用Lua比较多,也曾写过一个将表导出lua...

斯坦福大学公开课机器学习: advice for applying machine learning - evaluatin a phpothesis(怎么评估学习算法得到的假设以及如何防止过拟合或欠拟合)【图】

怎样评价我们的学习算法得到的假设以及如何防止过拟合和欠拟合的问题。当我们确定学习算法的参数时,我们考虑的是选择参数来使训练误差最小化。有人认为,得到一个很小的训练误差一定是一件好事。但其实,仅仅是因为这个假设具有很小的训练误差,当将其样本量扩大时,会发现训练误差变大了,这说明它不是一个好的假设。比如下图,拟合的非常好,一旦样本量改变,其训练误差随之增大。 那么我们如何判断一个假设是否是过拟合的呢?...

LuaJIT诡异bug(疑似)【代码】

程序为单进程多线程每个线程开启一个LuaJIT虚拟机,版本为LuaJIT 2.1.0-beta3在高并发情况下,lua代码会出现诡异情况,例如:if true thenif xxx == 1 thenerror("err")end elseif xxx ~= 1 thenerror("err")endif not xxx == 1 thenerror("err")end end 当xxx为1时,按理应该 xxx ~= 1为false,但是很奇怪的是反而为true。只有 not xxx == 1才为false 当把每个线程拆为独立进程后,此诡异情况消失。故猜测是luajit问题。 ps.暂时...

Sublime Text(2/3)编译lua【代码】

想在subLime text 3中集成编译Lua(或其他语言)功能,只需要在Tool->Build System -> New Build System中将原来的{  "shell_cmd": "make"}替换为下面的代码:{"cmd": ["c:/Users/Administrator/AppData/Roaming/Sublime Text 2/compile.exe", "$file"],"file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)","selector": "source.lua" } 然后在sublime Text文件夹路径下/Packages/ 中新建Lua文件夹,保存为Lua.sublime-bu...

150 Evaluate Reverse Polish Notation 逆波兰表达式求值【代码】

求在 逆波兰表示法 中算术表达式的值。有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。例如: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6详见:https://leetcode.com/problems/evaluate-reverse-polish-notation/description/class Solution { public:int evalRPN(vector<string> &tokens) {if(tokens.size() == 0)return 0...

Using an LPC-Link2 as an LPC4370 evaluation board

https://www.lpcware.com/content/faq/lpcxpresso/using-lpclink2-as-lpc4370-evalAs well as being a standalone debug probe, the LPC-Link2 can also be used as a simple LPC4370 evaluation board.The following notes may assist in such usage.Debug connectionMake sure that you have connected the JTAG/SWD cable from your debug probe to the target LPC-Link2‘s connector J2 (and not J7!).Thus if you are using ...

(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(8): 生成只读table【代码】

这个函数的作用是:生成只读table。--[[ -- 生成只读table -- @param table t 需要不允许修改的tableexample:local tb = {"星期一", "星期二", "星期日"} local days = readOnly( tb );days[2] = "星期三哪去了啊?" ;"[string \"Functions.lua\"]:466: 别修改我!我是只读的!" --]] function readOnly( t )local newT = tlocal mt = {__index = {}, -- 如果改成 newT = {}, __index = t, 会导致无法直接使用for循环遍历,...

Lua2.4 打印字节码 print.c【代码】

现在编译器相关的部分就剩下 luac.c 中的 do_dump 函数的分析了。这个函数里面主要有两种调用,存储字节码和打印字节码。先来看一下打印字节吧,要打印字节码,需要在编译器的命令行选项中有 "-l" 选项。static void do_dump(TFunc* tf) /* only for tf==main */ { if (dumping) DumpHeader(D); while (tf!=NULL) { TFunc* nf; if (listing) PrintFunction(tf); if (dumping) DumpFunction(tf,D); nf=tf->next; ...

lua解释执行脚本流程【代码】【图】

1 #include "lua.hpp" 2 3 #include <iostream>4usingnamespace std;5 6#pragma comment(lib, "lua5.1.lib")7 8struct lua_guard{9 lua_State *pL; 10 lua_guard(lua_State *s) :pL(s){} 11 ~lua_guard(){ lua_close(pL); } 12}; 1314int main(){ 15 lua_guard g(lua_open()); 16 luaL_openlibs(g.pL); 17int err; 18if ((err = luaL_dofile(g.pL, "mylua.lua") != 0)){ 19throw runtime_error("open lua file e...

Cocos2dx+lua合适还是Cocos2dx+js合适?

问题:开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适百牛信息技术bainiu.ltd整理发布于博客园回答:作者:廖宇雷链接:https://www.zhihu.com/question/21130385/answer/18485625来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。2014.02更新:请放心选择 Lua 吧。触控已经收购了 quick-cocos2d-x,2014年肯定会大力强化 cocos2d-x 的 Lua 支持。----我个人肯定是推荐 Lua 的,原因如下:1...

Nginx编译安装Lua模块【代码】

Nginx编译安装Lua模块一、安装Lua环境及相关库官网网址:https://github.com/openresty/lua-nginx-moduleLuaJIT `wget http://luajit.org/download/LuaJIT-2.0.2.tar.gzmake install PREFIX=/usr/local/LuaJITexport LUAJIT_LIB=/usr/local/LuaJIT/libexport LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0`ngx_devel_kit和lua-nginx-module ``` cd /opt/downloadwget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.t...

Lua杂项【代码】

lua的全局变量全都保存在table里面,名字叫: _G设置不能访问不存在的全局变量,不能赋值不存在的全局变量setmetatable(_G, {__index = function(_, n)error("attempt to read undeclared variable" .. n, 2)end,__newindex = function(_, n)error("attempt to write undeclared variable " .. n, 2)end})在这种情况下该如何给不存在的全局变量赋值以下方法可行么?测试不通过,环境5.3.5function declare( name, initval )rawset(_...

Quick cocos2dx-Lua(V3.3R1)学习笔记(四)----文本渲染之用BM TTF创建文本【代码】【图】

上一篇我们显示了背景图和文字,这一篇我们详细介绍一下文本显示的方法 一,显示fnt格式字体首先我们下载BMF格式文件制作工具,Bitmap Font Generator下载地址:http://www.angelcode.com/products/bmfont/安装完毕,我们打开这个工具,看到如下的界面 左边就是单独字体 右边就是字体库(注意:如果要有符号输入,将第一项Latin+Latin Supplenment打钩)(你看你看,我不是所有括号都有自言自语的)我们来创建字体点击Options下面的...

Lua wait sleep

使用os.execute 执行涉及等待、超时的外部命令、程序。配合 >nul 不显示标准输出流信息。执行过程是阻塞(block)等待的。 os.execute"ping 1.1.1.1 /n 1 /w <time in milliseconds> >nul" ,如os.execute"ping 1.1.1.1 /n 1 /w 1000 >nul" 。os.execute"CHOICE /n /d:y /c:yn /t:1 >nul" 。为(Windows)系统安装GNU命令包(minGW?)。>sleep --helpUsage: sleep NUMBER[SUFFIX]... or: sleep OPTIONPause for NUMBER seconds....

cocos-lua基础学习(四)quick层封装后的目录结构

命名空间cc  cocos2d核心类ccb  cocosbuilder扩展ccs  cocostudio扩展 cocos2d目录结构bitExtend.lua  cocos2d.luacocos2dConstants.luafuntions.lua  提供一组常用函数,以及对 Lua 标准库的扩展json.lua  json的编码与解码luaj.lua  Lua与Java之间的交互接口luaoc.lua  Lua与Objective-c之间的交互接口Opengl.luaOpenglConstants.lua cocostudio目录结构CocoStudio.luaStudioConstants.luaDeprecatedCocoStudio...

lua 工具类(二)【代码】【图】

local tonumber_ = tonumberfunctiontonumber(v, base)return tonumber_(v, base) or0endfunction toint(v)return math.round(tonumber(v)) endfunction tobool(v)return (v ~= niland v ~= false) endfunction totable(v)iftype(v) ~= "table"then v = {} endreturn v endfunction clone(object)local lookup_table = {}localfunction_copy(object)iftype(object) ~= "table"thenreturn objectelseif lookup_table[object] thenre...

cocos自定义类 绑定到lua【代码】【图】

1:按照\frameworks\cocos2d-x\tools\tolua下的README.mdown的指示一步一步做下去。务必要和文件中描述的一样,我已经被这个坑爹的东西坑的很惨了。(检查这个有没有配置好的方法是:运行下那个genbindings.py,看是否能生成liblua的auto目录下的那些文件。如果能,那么你的环境配置就成功了。)2:写一个自定义的C++类例子:<span style="font-family:KaiTi_GB2312;font-size:14px;">#pragma once #include "cocos2d.h" USING_NS_...

lua5.4.1 中 lua_pushnumber 浮点数处理问题

在arm架构项目中将lua5.4.1移植系统上,在实现数据处理时发现一个奇怪现象。在处理浮点数适合,发现lua_pushnumber将数据压栈后,再到脚本上读取出来时发现值变成科学数;无论输入什么值。网络找了一圈发现没有找到答案, 于是想将浮点转字符串在压栈; 但发现转换的值后一直显示是0.0同时在定义函数中使用c++的std::to_string(2.2) 将这个值打印发现也是0.0此时问题就变得神奇了, 明明是标准C++11的函数也会将 浮点输出强制转换了...

lua内存监测和回收

以下来自书籍《Cocos2d-x之Lua核心编程》1.-----------------------------------------若想查看程序当前的内存占用情况,可以使用Lua提供的collectgarbage。collectgarbage是Lua内部的垃圾回收模块对外提供的接口,可以用来监控或改变垃圾回收器的默认行为。下面是一个collectgarbage使用的例子print(collectgarbage("count")) local test = {} for i=1,10000 do test[i] = {} end print(collectgarbage("count...

Lua中的正则表达式

模式你还可以在模式串中使用字符类。字符类指可以匹配一个特定字符集合内任何字符的模式项。比如,字符类 %d 匹配任意数字. 所以你可以使用模式串‘%d%d/%d%d/%d%d%d%d‘搜索dd/mm/yyyy 格式的日期 :s = "Deadline is 30/05/1999, firm" date = "%d%d/%d%d/%d%d%d%d" print(string.sub(s, string.find(s, date))) --> 30/05/1999 下面的表列出了Lua支持的所有字符类:. 任意字符 %a 字母 %c 控制字符 ...

Cocos2d-x 脚本语言Lua基本数据结构-表(table)【图】

Cocos2d-x 脚本语言Lua基本数据结构-表(table)table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays、records、lists、queues、sets等,Lua都是通过table来实现,并且在lua中table很好的实现了这些数据结构。--摘自:《Programming in Lua》看以下代码,可以很清晰的明白Lua中表的使用:-- Lua中的表,table Config = {hello="Hello Lua",world="World"} -- 赋值方式1,以键=值的方式初始化 Config.words = "Hello" ...

lua:lua与C/C++程序的整合【代码】【图】

lua与C/C++交互,主要靠lua API和向lua注册好的函数。如下图注:LuaGlue就是让Lua脚本中可调用的C++函数的接口。即那些注册的函数。 这里起关键作用的要数lua_State的结构,这就得讲一下Lua环境和Lua Stack。 Lua环境Lua环境由所有可操作的数据构成,如编译好的函数、变量以及其他运行时内存。这些数据保存在一个称做lua_State的结构中。所有Lua应用程序都要求至少有一个lua_State,如果需要还可以有多个(如需要为两个不同的系统保...

关于Lua程序设计{读书笔记}

1、lua中的标识符可以是由任意字母、数字和下划线构成的字符串,但不能以数字开头。2、lua将通常类似"_VALUE"的标识符作为保留标识符3、lua的保留字 and break do else elseif end false for function if in loacl nil not or repear return then true until while 有大小写之分4、行注释-- 块注释--[[ …… ]]==============================================================全局变量lua中访问一个未初始化的变量不会引发...

Lua_第27章 User-Defined Types in C【代码】

Lua_第27章 User-Defined Types in C 在上一章,我们讨论了如何使用 C 函数扩展 Lua 的功能,现在我们讨论如何使用 C 中新创建的类型来扩展 Lua。我们从一个小例子开始,本章后续部分将以这个小例子 为基础逐步加入 metamethods 等其他内容来介绍如何使用 C 中新类型扩展 Lua。 我们的例子涉及的类型非常简单,数字数组。这个例子的目的在于将目光集中到 API 问题上,所以不涉及复杂的算法。尽管例子中的类型很简单,...