現在、私はLuaを埋め込み、それを賢明なインテリジェントな設定ファイルとして使用しています。しかし、私はLuaの使用について人々が賞賛して以来、何かが欠けていると思います。LuaがC/C++よりもはるかに優れている使用例
あなたはこの例を示すことによって、代わりにCのシェルスクリプトを使用する場合がありますなぜたとえば、私は簡単に説明することができます(確かに、ブースト正規表現は行き過ぎです):
#include <dirent.h>
#include <stdio.h>
#include <boost/regex.hpp>
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で私が「クリック」できる例がありますか?
編集:多分私の問題は、私がC言語を書いたほうが簡単だから、流暢に使えるようになっていて、まだLuaをよく知らないということでしょう。
EDIT2:
一例は、C++とLuaの中におもちゃ階乗のプログラムです:
#include <iostream>
int 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の例と同じようには目立たない。
重複したhttp://stackoverflow.com/questions/591523/when-is-it-good-to-use-embedded-script-language-like-lua? –
他のプログラミング言語を学ぶことで、より良いプログラマができます。あなたはCでも違った考え方を学びます。 – 0x6adb015
近い方向の重複は、異なる方向から同じ種類の質問に近づいています。それらをクロスリンクするのは良いですが、私はこれを「正確な」複製と見なしません。 – RBerteig