LUA - 技术教程文章

Lua脚本语言入门笔记

什么是Lua  Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位...

LUA OOP 单例模式实现的 一个 方案

单例存在这么一类class, 无论class怎么初始化, 产生的instance都是同一个对象。 Codestring.toHTMLCode = function(self) return encodeHTML(self) end -- Instantiates a class local function _instantiate(class, ...) -- 单例模式,如果实例已经生成,则直接返回 if rawget(class, "__singleton") then -- _G[class]值为本class的实例 if _G[class] then return _G[class] ...

【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】【代码】【图】

【151-Evaluate Reverse Polish Notation(计算逆波兰式)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Some examples: ["2", "1", "+", "3", "*"] ->((2 + 1) * 3) ->9["4", "13", "5", "/", "+"] ->(4 + (13 / 5)) ->6题目大意   ...

leetcode-Evaluate Reverse Polish Notation

Valid operators are?+,?-,?*,?/. Each operand may be an integer or another expression.public class Solution {public int evalRPN(String[] tokens) {int result=0;List<Integer> arrayList=new LinkedList<Integer>();int temp1=0;int temp2=0;for(String temp:tokens){if(temp.compareTo("+")==0){temp1=arrayList.remove(arrayList.size()-1);temp2=arrayList.remove(arrayList.size()-1);result=temp2+temp1;arrayList.ad...

lua的string.gsub初使用【代码】【图】

今天在学习lua,熟悉项目代码的过程中,发现string.gsub好高级,所以在此mark下。  以下是lua5.1的官方文档介绍。string.gsub (s, pattern, repl [, n])Returns a copy of s in which all occurrences of the pattern have been replaced by a replacement string specified by repl, which may be a string, a table, or a function. gsub also returns, as its second value, the total number of substitutions made. If repl...

Unity3D LuaComponent(基于ulua)【代码】

LuaComponent可以支持配一个需要执行在这个gameObject上的lua脚本,并且每个gameObject上的lua都是一个实例 using UnityEngine; using LuaInterface; using System.Collections.Generic;//Lua组件 publicclass LuaComponent : MonoBehaviour {//lua环境,需要在使用前给其赋值publicstatic LuaState s_luaState; //函数名字定义protectedstaticclass FuncName{publicstaticreadonlystring Awake = "Awake";publicstaticreadonlyst...

Lua的Table表使用例子(便于使用查询)【代码】【图】

一、table.insert()1.11local countries = {"China", "England", "Brazil"} 2--尾插法(Pos不填,默认插入尾部)3table.insert(countries, "France") 4--头插法(首部插入)5table.insert(countries, 1, "Australia") 67 dump(countries)二、table.remove()2.11local countries = {"China", "England", "Brazil", "England"} 2 table.removeItem(countries, "England", true) 3 dump(countries)2.21local countries =...

【Lua】Lua中__index与元表(转)

转载于:http://blog.csdn.net/xocoder/article/details/9028347 Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制,也是凭借这个机制,才能够实现“面向对象”的。举例说明:tempTable = {} print(tempTable.memberA) --这里试图打印tempTable并不存在的成员memberA 执行结果:nil输出为nil的原因很简单,tempTable中并没有memberA这个成...

使用lua实现split字符串分隔

LUA并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是LUA可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。LUA只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快,从而适合嵌入在别的程序里。因此在lua中并没有其他语言那样多的系统函数。习惯了其他语言的字符串分割函数,与是就自己写了一个,记录在此,以备使用. 下面在简...

lua脚本之lua语言简介以及lua的安装

本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文。还希望能够得到谅解。 一、Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业。Lua具有一个专家团队在维护和升级,其设计旨在项目中扩展功能,因此其内核小而稳定。在游戏开发中,Lua在用户界面、游戏数据管理、实时游戏事件管理、游戏人工智能、创建功能原型等方面具有强大的支持。Lua不能直接访问数据库,但可以通过整合其他语言组件来访问...

Lua 动态链接

C语言应用程序中经常使用动态链接机制集成各个模块;不过,动态链接机制并不是ANSI C标准的一部分,也就是说实现方法是不可以移植的。 Lua通常不会包含任何无法通过ANSI C来实现的机制,如果动态链接是一个例外。Lua打破了对可移植性的准则,为几种平台实现了一套动态链接机制。 package.loadlib是动态链接功能的核心函数,接收两个参数:动态库的完整路径名、函数名称。 loadlib函数加载指定的库,并将其链接入Lua;如你所想,...

Error filling print... Error evaluating expression :  Source text : $F{id}$F{guestId}【图】

1、错误描述2、错误原因3、解决办法版权声明:本文为博主原创文章,未经博主允许不得转载。Error filling print... Error evaluating expression : Source text : $F{id}$F{guestId}原文:http://blog.csdn.net/you23hai45/article/details/49304359

xLua使用require改变路径加载Lua脚本【代码】

这个问题我纠结了好久,应该是属于偏新手的一个问题,在写代码的时候因为两个lua脚本的关联问题,很多新人应该也会纠结于此。xLua官方的例子加载脚本是这样的:LuaEnv luaenvScriptCtrl = new LuaEnv(); luaenvScriptCtrl.DoString(@" require(‘LuaScriptList‘)");此时如果lua脚本不在Resources路径下,或者不在默认的目录下,此时是加载不到对应的lua脚本的。官方例子代码:SignatureLoaderTest.cs,第11行开始。解决方式如下:...

Lua与C#的交互1【代码】

1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using LuaInterface;6 7namespace LuaTest0018{9///<summary>10/// 1.把LuaInterface.dll,Lua51.dll,luanet.dll放在exe文件里 11/// 2.引用LuaInterface.dll类库 12/// 3.在C#定义的函数和Lua同步的函数一定要注意命名,大小写和访问类型一定要一致,否则会出现报错(真的感觉坑爹) 13/// 4.导出的Unity文件,需要把1中的dll放在同级,在...

Lua调用C++

1、新建Win32控制台DLL项目;2、添加测试头文件--------------------------------------#include "lua.h"#include "lauxlib.h"#include "lualib.h"--------------------------------------3、添加包含目录 D:\Program Files\lua\include (lua安装文件夹include目录)项目右键->属性->配置属性->VC++目录->包含目录 添加 D:\Program Files %28x86%29\lua\include4、添加lua51.lib项目右键->属性->配置属性->链接器->附加库目录 添加...

Redis执行Lua脚本的情况【代码】

第一个测试:往Redis里面存入1000个Hash,每个Hash里面有100个元素(Key 0-99,值是Key^2)。PHP代码,执行3s+ ~ 4s+<?php$redis = new Redis(); $redis->connect(‘127.0.0.1‘, 6379); $redis->select(1); for ($a = 0; $a < 1000; $a++) {for ($b = 0; $b < 100; $b ++)$redis->hSet($a, $b, $b*$b); }Lua脚本执行非常快,几乎是1s内完成的local a = 0while(a < 1000) dolocal b = 0while(b < 100)doredis.call(‘hset‘, a, b, b...

Lua MD5加密字符串【代码】

function md5_sumhexa(k)local md5_core = require"md5.core"k = md5_core.sum(k)return (string.gsub(k, ".", function (c) returnstring.format("%02x", string.byte(c)) end)) endprint(md5_sumhexa("Hello World!"))md5.core.dll 是Windows平台二进制文件,下载地址:http://pan.baidu.com/s/1dDGkQ7B原文:http://www.cnblogs.com/zhuawang/p/6720274.html

使用lua给wireshark编写uTP的Dissector

lonelycastle做uTP的实验,使用wireshark捕包,但是最初没有找到wireshark下的uTP的dissector,每次都需要比对文档,这样做实验理解报文含义,效率非常低。作为程序猿就想写一个uTP的dissector来实现这些工作。说干就干,查了一下发现wireshark可以使用lua来实现dissector,这样就简单过了,不用编写C的dissector了。本身是lua盲,又不了解wireshark的dissector开发,中间遇到了很多问题,还好逻辑比较简单,折腾了一个晚上就搞定了...

[LeetCode]Evaluate Reverse Polish Notation, 解题报告【图】

前言昨天终于项目完成,历时一个多月的时间,解决了Android上内存泄露和各种ANR问题,今天终于有时间写点ACM题目了。题目Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Some examples:思路这道题目还是挺奇怪的,读完题目赶紧非常简单,但是LeetCode上的AC率只有19%,尝试第一次提交代码就ac了,有点无语,...

lua优化

1 尽量使用local变量以下是几个对比测试,你可以复制代码到你的编辑器中,进行测试。123456a = os.clock()for i = 1,10000000 do local x = math.sin(i)endb = os.clock()print(b-a) -- 1.113454把math.sin赋给local变量sin: 1234567a = os.clock()local sin = math.sinfor i = 1,10000000 do local x = sin(i)endb = os.clock()print(b-a) --0.75951 直接使用math.sin,耗时1.11秒;使用local变量sin来保存math.sin,耗时0.76秒...

lua 性能优化

飞书文档:https://idreamsky.feishu.cn/docs/doccnjZ7tfpP5AFnSWGnlaUDm1h一、需要注意的数据类型1. 表tableLua 实现表的算法颇为巧妙。每个表包含两部分:数组(array)部分和哈希(hash)部分,数组部分保存的项(entry)以整数为键(key),从 1 到某个特定的 n,所有其他的项(包括整数键超出范围的)则保存在哈希部分。哈希部分使用哈希算法来保存和查找键值。它使用的是开放寻址(open address)的表,意味着所有的项都直接...

Lua时间转化的几个小例子

1、把时间 秒,转化为xx天xx时xx分xx秒 的形式复制代码 代码如下: --把时间 秒,转化为xx天xx时xx分xx秒 的形式 function convertTimeForm(second) local timeDay = math.floor(second/86400) local timeHour = math.fmod(math.floor(second/3600), 24) local timeMinute = math.fmod(math.floor(second/60), 60) local timeSecond = math.fmod...

Win32下 Qt与Lua交互使用(三):在Lua脚本中connect Qt 对象【代码】【图】

话接上文。笔者为了方便使用Lua,自己编写了一个Lua的类。主要代码如下: QLua.h 1#ifndef QLUA_H2#define QLUA_H3 4// own 5 #include "include/lua.hpp" 6 7// qt 8 #include <QObject>9 #include <QFile> 10 #include <QDebug> 1112 #include <QWidget> 13 #include <QLineEdit> 14 #include <QPushButton> 15 #include <QMessageBox> 1617class QLua : public QObject 18{ 19 Q_OBJECT 20public: 21 QLua(QObject *p...

Lua 学习之基础篇五<Lua OS 库>【代码】

lua os库提供了简单的跟操作系统有关的功能1.os.clock()返回程序所运行使用的时间local nowTime = os.clock() print("now time is ",nowTime) local s = 0 for i = 1,100000000 dos =s+i end spendTime = os.clock() - nowTime print(string.format("Spend time is : %.2f\n", spendTime)) -- now time is 0.002841 -- Spend time is : 0.662.os.date ([format [, time]])用来格式化时间戳为可读时间,time为可选时间戳,省略时取...

弱性能穿戴设备App化之Lua For STM32

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 今年穿戴设备突然火起来......穿戴设备与概念未爆发前的电子产品不同于“可联网”和“支持app”,使得一个封闭的小玩意可以加入多人的想象,屌丝的想象力很丰富的说....穿戴设备目前分为"屌丝“和”高富帅“两档配置,所谓”屌丝”配置也就是弱得装不上android,未来一段时间内,手表和手环都以“屌丝”配置为主,例如pebble和sony手表以arm cortex m3芯,不过"高富...

lua 运算符【图】

Lua中的表达式包括数字常量、字符串常量、变量、一元和二元运算符、函数调用。还可以是非传统的函数定义和表构造。 算术运算二元运算符:+ - * / ^ (加减乘除幂)一元运算符:- (负值)这些运算符的操作数都是实数。 关系运算符< > <= >= == ~=这些操作符返回结果为false或者true;==和~=比较两个值,如果两个值类型不同,Lua认为两者不同;nil只和自己相等。Lua通过引用比较tables、userdata、functions。也...

lua打包exe【转】【图】

可以使用srlua这个工具把lua脚本打包成exe,提供了lua 5.2、5.1、5.0的版本对应的源码。不过我懒得编译了,发现“白的菜”替懒人编译好了(感谢),点击下载。解压后出现“luapack\bin\debug"目录,如图然后打开cmd切换到当前目录,运行 glue srlua.exe test.lua test.exe其中test.lua 是你要打包的lua文件,test.exe是生成的exe文件名。原文:http://www.cnblogs.com/ruofengzhishang/p/3874756.html

lua 与 c++ 的基本交互 1【代码】【图】

版本是 lua5.1 vs 2013 转载自 http://blog.csdn.net/wangbin_jxust/article/details/37557807 一、打开vs2010二、创建项目新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成。具体如下图:三、拷贝源码将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下。四、生成lua.lib项目右键->生成。此时即可在项目的Debug文件夹下看到生成的 lua.lib了...

Sweet Snippet 系列之 Lua表排序

?? 作为Lua中实现各类数据结构的基石,表的使用想必是贯穿于整个项目的开发过程之中,其中对表内容的排序想必亦是常见的需求之一,Lua内置的Table函数库便提供了sort函数来实现这项功能,但是仅能支持表中数组部分内容的排序,而想要排序表中哈希部分的内容,简单的一个方法就是另写一个迭代器来支持:function order_pairs(tbl)local names_buffer = {}for name, _ in pairs(tbl) dotable.insert(names_buffer, name)endtable.so...

Sublime Text2 注册码 汉化 配置lua开发环境

----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-855605813A03DD 5E4AD9E6 6C0EEB94 BC99798F942194A6 02396E98 E62C9979 4BB979FE91424C9D A45400BF F6747D88 2FB8807890F5CC94 1CDC92DC 8457107A F151657B1D22E383 A997F016 42397640 33F41CFCE1D0AE85 A0BBD039 0E9C8D55 E1B89D5D5CDB7036 E56DE1C0 EFCC0840 650CD3A6B98FC99C 8FAC73EE D2B95564 DF450523------ END LICENSE ------ 原文:http://www.cnblogs.co...