我目前正在嵌入Lua并将其用作一个美化的智能配置文件.但是,我认为我缺少一些东西,因为人们对Lua的使用赞不绝口.
例如,我可以通过显示这个示例轻松解释为什么你可以使用shell脚本而不是C(诚然,boost regexp是过度杀伤):
#include#include #include int main(int argc, char * argv[]) { DIR *d; struct dirent *dir; boost::regex re(".*\\.cpp$"); if (argc==2) d = opendir(argv[1]); else d = opendir("."); if (d) { while ((dir = readdir(d)) != NULL) { if (boost::regex_match(dir->d_name, re)) printf("%s\n", dir->d_name); } closedir(d); } return(0);
并将其与:
for foo in *.cpp; do echo $foo; done;
你能在Lua中给出任何可以让我"点击"的例子吗?
编辑:也许我的问题是我不知道Lua还不能流利地使用它,因为我发现编写C代码更容易.
EDIT2:
一个例子是C++和Lua中的玩具阶乘程序:
#includeint fact (int n){ if (n==0) return 1; else return (n*fact(n-1)); } int main (){ int input; using namespace std; cout << "Enter a number: " ; cin >> input; cout << "factorial: " << fact(input) << endl; return 0; }
LUA:
function fact (n) if n==0 then return 1 else return n * (fact(n-1)) end end print ("enter a number") a = io.read("*number") print ("Factorial: ",fact(a))
在这里,程序看起来很相似,但是在include,namespace和main()声明中显然可以摆脱一些错误.还删除变量声明和强类型.
现在有人说这是一个优势,它增加了一个更大的程序,还是更多呢?这与bash示例的方式不同.
使用Lua等脚本语言还有许多其他好处.
Lua与C++的一些优点:
由于高级性质,它在开发时间方面通常较短,如您的示例所示.
它不需要重新编译来改变行为.
可以在非开发计算机上更改行为.
原型设计非常快速和简单,因为您可以在运行时调整逻辑.