
lua入门教程
go2coding
关注机器学习,人工智能
展开
-
lua入门教程:第十二章 lua中Metatables的使用
在上一节中我们可以可以元表中的__call方法,使得表变量可以当成函数来使用,那么在c中,能否也通过元表的这个属性,把函数注册进去呢?看下如下是怎么实现的?#include "stdafx.h"extern "C"{#include "lua.h"#include "lualib.h"#include "lauxlib.h"};static int average(lua_State *L){ int a = lua_tonumber(L, -1); return 0;}原创 2022-04-19 09:04:29 · 464 阅读 · 0 评论 -
lua入门教程:第十一章 lua中Metatables的使用
Metatable和表在使用lua的时候,lua 的表是最经常用到的,虽然表已经提供给我们非常多的操作,包括变量,函数等,Metatable的引入可以改变相应的表行为,使得表更加的灵活。有时我们需要对表中新创建的元素进行跟踪,使用Metatable可方便的做到这一点。带着这个问题,看看是如何使用Metatable 做到这一点的。__index和**__newindex**如下先创建一个带Metatable-- 声明一个正常的关系变量lo_table = {} -- 声明空元表变量lo_me原创 2022-04-19 09:04:06 · 834 阅读 · 0 评论 -
lua入门教程:第十章 C API 类方式注册
在c++中,允许我们创建类而lua并不是c++写出,我们如何把类注册到c++中去呢?需要一些通用的技巧,包括两个方面的东西,先把创建类的方法注册到全局函数中,在元表中注册各个成员函数。创建一个CTest的类。test.h#ifndef __TEST_H__#define __TEST_H__class CTest{public: CTest(); ~CTest(); int getA(); void setA(int a);private: int m_a;};#end原创 2022-04-18 09:13:07 · 383 阅读 · 0 评论 -
lua入门教程:第九章 C API 另一种注册方式
还有另外一种往lua中注册函数的方法,直接把函数编译在dll或者so中,当require "xx"后就会自动的加载dll中的函数,注册到lua中去,看下我们是如何加载这一个过程的。tbLib.h#ifndef _TBLIB_H#define _TBLIB_H#ifdef __cplusplusextern "C" {#endif#include "lua.h"#include "lualib.h"#include "lauxlib.h"#ifdef TBLIB_EXPORTS#d原创 2022-04-18 09:11:18 · 582 阅读 · 0 评论 -
lua入门教程:第八章 C API 注册c函数
了解了栈的操作以后,为了扩展lua的功能,需要在c层上编程函数,让lua进行调用,需要把c语言函数注册到lua中。extern "C"{#include "lua.h"#include "lualib.h"#include "lauxlib.h"#include "luaconf.h"};#include <string.h> using namespace std;static int average(lua_State *L){ /* get number of原创 2022-04-18 09:08:53 · 1778 阅读 · 0 评论 -
lua入门教程:第七章 C API c语言操作表格
在lua中表的使用是最常见的,在c中如何对lua中的表进行操作也是很经常使用的功能,在如下的代码中加载了lua 代码以后,通过lua_getglobal 获得了相应的表,可以使用lua_getfield进行相应的设置了,这里必须清楚的一点是,你需要对堆栈中的数据较为清楚,清楚了堆栈顺序,你才能够知道你设置的数据到底是对谁有用的。下面的例子,找到相应的表,原先的表并没有y的元素,后面通过lua_setfield对数据进行设置。使得lua中表中有了y的元素。代码如下:#include "stdafx.h"原创 2022-04-18 09:07:41 · 758 阅读 · 0 评论 -
lua入门教程:第六章 C API 栈平衡
较为常见的是c/c++中调用lua文件,在lua中使用luaL_dofile加载lua文件,并执行lua代码。extern "C"{#include "lua.h"#include "lualib.h"#include "lauxlib.h"#include "luaconf.h"};#include <string.h>int main(){ int error; lua_State* L = luaL_newstate(); luaL_openlibs(L);原创 2022-04-18 09:06:49 · 1678 阅读 · 1 评论 -
lua入门教程:第五章 C API c语言调用lua代码
Lua 可以作为程序库用来扩展应用的功能,也就是 Lua 可以作为扩展性语言的原因所在。同时,Lua 程序中可以注册有其他语言实现的函数,这些函数可能由 C 语言(或其他语言)实现,可以增加一些不容易由 Lua 实现的功能。这使得 Lua 是可扩展的。与上面两种观点(Lua 作为扩展性语言和可扩展的语言)对应的 C 和 Lua 中间有两种交互方式。第一种,C 作为应用程序语言,Lua 作为一个库使用;第二种,反过来,Lua 作为程序语言,C 作为库使用。这两种方式,C 语言都使用相同的 A原创 2022-04-18 09:05:53 · 899 阅读 · 0 评论 -
lua入门教程:第四章 函数
函数的定义为了程序的复用性和可读性,在编写程序的时候通常会把重复使用的代码写成函数的形式,lua中函数的语法形式如下:function func_name (arguments-list) statements-list;end;开头使用function定义函数,结尾使用end结束函数的定义。同样的if,while,for也是使用end作为的结尾。函数的返回值lua中函数的返回值可支持同时返回多个值,这一点非常方便,在需要多值返回的时候不需要在定义一个结构体来存放结果。如下定义一个查原创 2022-04-18 09:05:09 · 626 阅读 · 0 评论 -
lua入门教程:第三章 表的构建
表创建表是 Lua 特有的功能强大的东西。最简单的构造函数是{},用来创建一个空表。可以直接初始化数组:days = {"Sunday".."12", "Monday" or 2, "Tuesday","Wednesday","Thursday", "Friday", "Saturday"}创建了一个days的表格, 其中..为连接符, or 运算结果和其他语言有点不同,并返回的并不是true或者false。我们来查看一下表格里的数据,值得注意的是lua下标是从1开始的。> print(da原创 2022-04-18 09:03:16 · 621 阅读 · 0 评论 -
lua入门教程:第二章 数据类型
在lua中有8中基本类型,分别为:nil(空)类型boolean(布尔)类型number(数字)类型string(字符串)类型userdata(自定义类型)function(函数)类型thread(线程)类型table(表)类型这里有两个比较特殊的类型是,function(函数)类型和thread(线程)类型,在其他语言中,这两者会被看成是语言的语法,在lua中和数据类型是等位的,这两点后面会有详细的介绍。这8种基础类型也是lua的重点,围绕着这些可以更加深入理解lua核心。...原创 2022-04-18 09:02:17 · 229 阅读 · 0 评论 -
lua入门教程:第一章 开发环境搭建
lua是一门很常见的脚本语言,在开始学习之前先看看如何搭建开发环境,这里介绍两种搭建的方式,使用别人已经做好的安装包,自己编译源代码。lua for windows使用lua for windows进行环境的搭建,先下载lua for windows,下载下来的是一个exe文件,像安装普通软件一样安装lua for windows。检查一下安装是否成功,在cmd命令窗口下输入lua,出现如下:使用Visual Studio编译lua源码在lua下载地址下,选择一个lua版本,下原创 2022-04-18 09:01:25 · 1281 阅读 · 0 评论