我即将开始我的下一个Web开发项目,并希望了解Lua在Web开发领域的优点.
Lua如何比较PHP/Python/JSP/etc ..用于Web开发?
任何理由为什么Lua会成为Web应用程序语言与其他语言的不良选择?
我想在Lua和C中处理以下代码:
假设我有一个命名为C函数的Foo
Lu 函数.我称之为Lua脚本中的跟随:
Foo(15, "bar", function(z) return 2 * z + 1 end)
Run Code Online (Sandbox Code Playgroud)
在C方面,我检索参数,我可以在我的结构中存储数字和字符串.但是我需要哪种数据类型来存储匿名函数?我怎么以后再打电话呢?
伙计们,有没有办法克隆Lua状态?
在我的游戏应用程序中,Lua虚拟机的初始化过程非常繁重(大约1秒,因为许多脚本一次加载).我为每个自治代理程序都有一个单独的Lua VM,一旦创建了代理程序,它的Lua初始化对FPS影响非常大.
我正在考虑以下架构:如何保持"preforked"Lua状态,然后只为每个代理克隆?可能吗?
I need a base converter function for Lua. I need to convert from base 10 to base 2,3,4,5,6,7,8,9,10,11...36 how can i to this?
我想编写一个C++ - 可以在执行期间交互/调用Lua脚本的程序.该程序的一个关键概念是完全平台独立性,但我似乎无法找到实际提供某些东西的Lua-build.
到目前为止我发现的Lua-builds要么基于环境变量,要么基于特定的库.lib
,.dll
或者.so
.来自lua.org的官方Lua-source 也不是我正在寻找的,因为它定义了一个主要功能......
是否有一个简单的 - 最好的情况是像sqlite-amalgamation - 用于C/C++的Lua-interpreter,它没有任何这些依赖项?
我正在考虑将Lua嵌入到我正在开发的C++应用程序中.我的目的是使用Lua编写为某些给定输入执行的有序操作的脚本,即.在c ++程序中收到一个新的工作项,将细节传递给Lua后端,Lua调用c ++来执行必要的工作,返回完成的结果.
涉及的主要数据结构是一个大型(大约80多个成员)struct
.我(非常)是Lua的新手,我不确定如何将它传递给我的主机应用程序和嵌入式Lua状态.
到目前为止,我看到我的选择:
a)当与C++和Lua交叉时,将所有单个数据成员推送/弹出(听起来很混乱).
b)构造一个表并填充值,然后将其放入/关闭堆栈(稍微清洁一点).
c)把它传递给userdata
(轻/重?)(我对此很粗略,不知道我是否可以从Lua那边访问它以查询必要的操作).
任何指导将不胜感激.
我使用lua C-API读取存储在lua文件中的配置数据.
我在文件中有一个漂亮的小表,我编写了一个查询C函数来解析表中的特定字段.(它的确有效!)
它通过一遍又一遍地调用这些函数中的一些来工作:
...
lua_getglobal (...);
lua_pushinteger (...);
lua_gettable (...);
lua_pushstring (...);
lua_gettable (...);
lua_lua_getfield (...);
...
Run Code Online (Sandbox Code Playgroud)
你明白了.
在我查询完这样的数据之后,我是否必须清理堆栈?
我正在尝试将示例lproc程序(在编程Lua,第30章中描述)加载到Lua中并以某种方式结束.我正在关注这个 - http://www.lua.org/pil/26.2.html让我的c模块进入lua.以下是我采取的步骤:
我有一个lproc.h和lproc.c(完全包含本书第30章中列出的函数).我正在编译lproc.c为--- gcc -c lproc.c -DLUA-USERCONFIG = \"lproc.h \"
我用lproc.o创建了一个库,命名相同.
然后按照指示编译lua.c.我的头文件包含宏LUA_EXTRALIBS和方法声明.
去了Lua解释器,它给出了以下错误:
> require "lproc" stdin:1: module 'lproc' not found: no field package.preload['lproc'] no file './lproc.lua' no file '/opt/local/share/lua/5.1/lproc.lua' no file '/opt/local/share/lua/5.1/lproc/init.lua' no file '/opt/local/lib/lua/5.1/lproc.lua' no file '/opt/local/lib/lua/5.1/lproc/init.lua' no file './lproc.so' no file '/opt/local/lib/lua/5.1/lproc.so' no file '/opt/local/lib/lua/5.1/loadall.so' stack traceback: [C]: in function 'require' stdin:1: in main chunk [C]: ?
似乎该模块没有注册,我需要从Lua做什么?时间很短,我做了一件可怕的事,任何方向都会受到欢迎.
谢谢,
萨彦
为了使字符串成为空字符串我写了这个:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char str[15]="fahad uddin";
strlen(str);
puts(str);
for(int i=0;str[i]!='\0';i++)
strcpy(&str[i],"\0") ;
puts(str);
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在此之前,我试过:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char str[15]="fahad uddin";
strlen(str);
puts(str);
for(int i=0;str[i]!='\0';i++,strcpy(&str[i],"\0"))
;
puts(str);
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,程序运行正常,而在第二个示例中,它打印字符串的第一个字母(在此示例中为F).为什么是这样?