我参考了一下书本上的知识,加深了解了lua的变长参数。其实是table
如果题目理解有错,那就那样吧。
sum.lua文件
function add(...)
local sum=0
for v in string.gmatch(...,"%d+") do
sum=sum+tonumber(v)
end
return sum
end
C++文件
这个我就不用类了,直接写了
//如果你没有这个文件的话
//extern "C" {#include "lua.h"#include "lualib.h"#include "lauxlib.h"}
#include <lua.hpp>
#include <iostream>
#include <string>
using namespace std;
int main(){
lua_State *l=luaL_newstate();
luaL_openlibs(l);
if(luaL_dofile(l,"sum.lua")){
cout<<"文件加载错误"<<endl;
}
string a;
cout<<"求和输入形式为“21,21,21”"<<endl;
cin>>a;
lua_getglobal(l,"add");
lua_pushstring(l,a.c_str());
if(lua_pcall(l,1,1,0)==0){
cout<<"sum:"<<lua_tonumber(l,-1)<<endl;
lua_pop(l,1);
}else{
cout<<lua_tostring(l,-1)<<endl;
}
lua_close(l);
system("pause");
return 0;
}
配置问题就不提了
如果题目理解有错,那就那样吧。
sum.lua文件
function add(...)
local sum=0
for v in string.gmatch(...,"%d+") do
sum=sum+tonumber(v)
end
return sum
end
C++文件
这个我就不用类了,直接写了
//如果你没有这个文件的话
//extern "C" {#include "lua.h"#include "lualib.h"#include "lauxlib.h"}
#include <lua.hpp>
#include <iostream>
#include <string>
using namespace std;
int main(){
lua_State *l=luaL_newstate();
luaL_openlibs(l);
if(luaL_dofile(l,"sum.lua")){
cout<<"文件加载错误"<<endl;
}
string a;
cout<<"求和输入形式为“21,21,21”"<<endl;
cin>>a;
lua_getglobal(l,"add");
lua_pushstring(l,a.c_str());
if(lua_pcall(l,1,1,0)==0){
cout<<"sum:"<<lua_tonumber(l,-1)<<endl;
lua_pop(l,1);
}else{
cout<<lua_tostring(l,-1)<<endl;
}
lua_close(l);
system("pause");
return 0;
}
配置问题就不提了