lua学习笔记

原创 2012年03月30日 12:29:14

 

近日时间比较充裕,学习一下lua语言,顺便写下笔记,方便以后加深学习。

为了方便,我没有编译lua代码,直接下载了lua的动态库及执行文件

链接地址:

C/C++调用lua动态库及头文件地址(用于C/C++嵌入Lua脚本解析):

http://sourceforge.net/projects/luabinaries/files/5.1.4/Windows%20Libraries/lua5_1_4_Win64_dll8_lib.zip/download(下载这个版本需要在VS2005下编译)

也可以到http://luabinaries.sourceforge.net/download.htmlhttp://www.lua.org找适合自己的版本。

lua脚本解析器地址:

http://en.sourceforge.jp/frs/g_redir.php?m=jaist&f=%2Fluabinaries%2F5.2%2FExecutables%2Flua-5.2_Win32_bin.zip

一、"hello world"

哈哈,先使用经典的hello world带进门

1.在“运行”键入cmd打开dos窗口,并将当前目录跳转到lua的目录下(我的是在C:\lua-5.2_Win32_bin

2.lua目录下创建一下文本文件(test.txt)并加入内容

 print("hello world")

3.回到dos窗口,输入执行命令lua52.exe test.txt

如图:

 

二、循环语句

test.txt加入

for i=1,10,2 do

 print("i = " .. i)

end

dos窗口输入命令lua52.txt test.txt如图

注:for语句中 i = 2, 10,2是表示从1开始,每次递增2,到10结束(包含10

 

. 变量

lua 的变量是不需要声明类型的

a = 5

b = "hello"

print(a.. "  ".. b)

执行打印出来的结果如下

 

四、 table

lua的数据结构和数组都可以由table来实现,实例代码如下:

aa = {}

aa["xx"] = 11

aa[3] = 22

print(aa["xx"] .." --".. aa[3])

输出结果:

 

五、函数

lua 的函数语法为

function 函数名(参数)

  实现...

end

下面为一段实例

function add(a, b)

  sum = a + b

  return sum

end

print("10 + 20 = "..add(10,20))

执行结果如下:

 

六、C/C++调用lua脚本

1.建立工程

1.使用VS2005创建一个C++ console工程

2.将下载到的lua5_1_4_Win64_dll8_lib.zip解压到工程中

3.在工程中加入对lua51.lib的依赖,可以直接在代码里写如#pragma comment(lib, "lua51.lib"),出可以将其到到工程设置的依赖项目中。

 

2C/C++调用lua的流程

C/C++lua流程大概如下:

/*打开lua*/

lua_State *l = lua_open();

/*打开全部的库*/

luaL_openlibs(l);

/*执行lua脚本、调用lua信息*/

...

/*关闭lua*/

lua_close(g_l);

 

 

3. 创建一下test.txt的文本并写入如下代码

function add(a, b)

  sum= a+b

 return sum

end

 

a1 = "hello world"

b1 = 50

 

4. VC工程中写入如下测试代码,已经带有较详细注释

#include "stdafx.h"

#include <windows.h>

#include <iostream>

extern "C" {

#include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

}

 

#pragma comment(lib, "lua51.lib")

 

lua_State *g_l;

 

/*调用luaadd函数*/

int lua_add(int a, int b)

{

         lua_getglobal(g_l,"add");

         lua_pushnumber(g_l,a);

         lua_pushnumber(g_l,b);

 

         lua_call(g_l,2, 1);

 

         /*get the result */

         intsum = (int)lua_tonumber(g_l, -1);

         lua_pop(g_l,1);

         returnsum;

}

 

int _tmain(int argc, _TCHAR* argv[])

{

         /*打开lua*/

         g_l= lua_open();

         /*打开全部的库*/

         luaL_openlibs(g_l);

 

         /*执行lua脚本,直接通过字符串传入*/

         luaL_dostring(g_l,"print(100)");

         /*执行lua脚本,通过读取配置文件*/

         luaL_dofile(g_l,"test.txt");

 

         /*调用luaadd函数*/

         std::cout<<"calllua add(1,2) = "<<lua_add(1 , 2) <<std::endl;

        

         /*获取b1的值*/

         lua_getglobal(g_l,"b1");

         if(lua_isnumber(g_l,-1))

         {

                   std::cout<<"b1= "<<lua_tonumber(g_l, -1)<<std::endl;

         }

 

         /*获取a1的值*/

         lua_getglobal(g_l,"a1");

         if(lua_isstring(g_l,-1))

         {

                   intnLen = 0;

                   std::cout<<"a1= "<<lua_tostring(g_l, -1, nLen)<<std::endl;

         }

 

         /*关闭lua*/

         lua_close(g_l);

         return0;

}

执行结果:

100

call lua add(1,2) = 3

b1 = 50

a1 = hello world

 

总结,学习所花时间,很多没有学深学细,总体来说这门语言入门比较快,易学。没有实际的项目经验还不能深刻理解它的优势所在。

 

GreenSock动画平台学习笔记(一)TweenLite

转载:http://www.cnblogs.com/2050/archive/2010/10/10/1846983.html 静态属性 TweenLite.defaultEas...
  • happyrabbit456
  • happyrabbit456
  • 2013年01月31日 11:19
  • 655

nginx学习(十二)——nginx+lua入门

参考文章:http://www.111cn.net/sys/nginx/106730.htm 1.hello lua nginx通过content_by_lua和content_by_lua_file...
  • xxcupid
  • xxcupid
  • 2016年09月13日 10:49
  • 1317

cocos lua学习笔记

现在学习的时候用的是cocos3.7 + ide1.2 在lua里面,c++的方法和类基本上都在cc.和ccs.里面,可尝试cc.Sprite,ccs.GUIReader 加载ui:local...
  • qq349263818
  • qq349263818
  • 2015年08月27日 17:38
  • 717

【Lua学习笔记】 --> 《类型与值、表达式与基本语法》

lua学习笔记,类型与值、表达式与基本语法。
  • JY_95
  • JY_95
  • 2016年02月04日 16:09
  • 1088

LUA学习路线汇总

语法   Lua程序设计Programming in Lua   果冻想-Lua 语法入门 源码   the implementation of lua 50 英文原版 中文翻译   Lua源码鉴...
  • lodypig
  • lodypig
  • 2016年12月09日 21:08
  • 995

Linux学习笔记之——起始篇

摘要:学习笔记目录、方便以后回顾、没有什么捷径可走、不断的记录、总结、练习、coding、coding。...
  • chenghuaying
  • chenghuaying
  • 2014年03月31日 16:47
  • 4557

《Programming in Lua 3》读书笔记(十五)

日期:2014.7.22 PartⅢ     The Standard Libraries 19 The Bitwise Library 位运算库 lua中的位运算由于数值类型...
  • u011894560
  • u011894560
  • 2014年08月10日 21:31
  • 4049

在计算机学习,善用“笔记软件”

为知笔记 Linux 版 2015-12-03 产品更新 提示:软件的名称由wiznote修改为WizNote,在终端命令行下需要使用WizNote来打开程序。 更新日志: 2.3.2 版本(201...
  • Lina_ACM
  • Lina_ACM
  • 2016年08月03日 10:41
  • 803

斯坦福机器学习网易公开课笔记1

之前在coursera上看了Andrew Ng的机器学习课程,那个课程比较简明,适合对机器学习有一个整体的印象,但是很多细节的内容和推导都忽略了。现在想要了解机器学习更多,所以开始看Andrew Ng...
  • zhonglj0314
  • zhonglj0314
  • 2017年02月20日 09:57
  • 531

Lua初学者(一)--Lua 简单教学

基础学习、安装、配置Lua环境,基础篇(一),资源上传百度云,直接下载即可。 有好的个人总结都会后续录入的。...
  • zhuzhuyule
  • zhuzhuyule
  • 2014年11月05日 20:31
  • 1465
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lua学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)