lua_writeline的简单介绍
Lua_函数_可变参数
local function fun(x)
end
函数可以复制给变量
f = fun(x)
f(10)
函数可以返回多值,在return 后返回值,多值用逗号分隔
local function rfun()
return 1,2,"name"
end
a,b,name = rfun()
函数可以传递可变参数,用 ... 标识可变参数,可变参数可以赋值给变量
local function fun( ... )
local r = { ... } -- 可变参数构成的数组
local count=0
for i,v in pairs(r) do
count = count + v
end
print(count)
end
fun(1,2,3,4,5)
可变参数的长度可以用select(‘#’, ... ) 获取。
select(n, ... ) 返回从第n个开始到结束的所有可变参数。如果n大于可变参数的长度则返回nil
local function fun( ... )
print(select('#', ... ))
print(select(2, ... ))
end
fun(1,2,3,4)
fun(1)
输出:
4
2 3 4
1

怎么使用lua脚本
LUA脚本语言基本使用方法是本文要将介绍的内容,主要是来学习Lua脚本语言的使用方法,具体内容来看本文详解。
先要把下边这些语句加入到VC中的头文件,一般是加到StdAfx.h中
extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" #pragma comment(lib, "lualib.lib") #pragma comment(lib, "lua.lib") }
然后一般来说都使用一个全局的LUA库定义的这个东西
lua_State* g_Lua;
并且在工程处初始化时也给LUA初始化
g_Lua = lua_open(); **加这句 /* load Lua base libraries */ 网上一些教材中这么写的 lua_baselibopen(g_Lua); 不过我这简单的例子中不用到这些也行 lua_tablibopen(g_Lua); lua_iolibopen(g_Lua); lua_strlibopen(g_Lua); lua_mathlibopen(g_Lua);
紧接着声明接口函数,注册上函数
lua_register(g_Lua, "Message", myMessage);
好,初始化部分完了,看看接口函数的写法。
函数必须这样的格式来写
static int Func(lua_State *L) { 静态型函数,而且必须带参数为lua_State结构指针 返回的值是代表返回的数据个数,比如return 2;就可以代表 返回两个整数啊,浮点数什么的,象LUA的脚本编写就可以这样 i, j = Func() , 这样就表示可以从Func接口函数中得到两个返回值了 return 0; }
执行脚本语句可以读文件,也可以直接读函数名
注册了
lua_register(g_Lua, "Message", myMessage); static int myMessage(lua_State *L) { OutputDebugString("OK"); return 0; } lua_dofile(g_Lua, strCurPath); //读文件,必须给出完整的文件路径名称 lua_dostring(g_Lua, "Message()"); //直接读函数
文件中只要写上
Message()
就可以了。
lua 动态修改元方法
1、 利用lua中 "lua_shared_dict" 指令开辟一个共享内存空间;
2、通过API动态根据key值参数修改 upstream (这里使用 host 作为key);
3 、利用 proxy_pass 可使用变量特性及lua指令 "set_by_lua" 动态修改当前 upstream 变量即可。