1

Luaコマンドライン引数を読み取るCのサンプルコードを探しています。何か助けはありますか?

4

1 に答える 1

5

Luaインタープリターは、ホスティングアプリケーションに組み込まれるように設計されています。コマンドライン引数(またはアプリケーションに相当するもの)を適切なメカニズムでスクリプトに渡すのは、アプリケーションの責任です。

自立型言語として使用される場合、ホスティングアプリケーションは実行可能ファイルであり、Luaソースディストリビューションluaで実装されます。lua.c

開始時にlua、すべてのコマンドライン引数をarg配列の形式でグローバル変数にバンドルします。arg[0]実行されているスクリプトファイルの名前が含まれ、arg[1]後でコマンドラインでそのスクリプトに渡された引数が含まれます。また、コマンドラインのバランスをargテーブルの負のインデックスに格納します。コマンドlua sample.lua a b cの場合、配列は割り当てのように構築されます

arg = {[-1] = "lua"、[0] = "sample.lua"、 "a"、 "b"、 "c"}

スクリプトが実行される前に実行されました。この割り当ては関数によって実行されます。この関数は、スクリプト引数をLuaスタックに残して、スクリプトがキーワードgetargs()を介してスクリプトの最上位関数への可変引数としてアクセスできるようにします。...

スクリプトから使用されるモジュールがコマンドライン引数にアクセスする必要がある場合は、グローバルargテーブルからアクセスする可能性があります。これは、モジュールがCで作成されたかLuaで作成されたかに関係なく当てはまります。グローバルにアクセスするには、グローバルへのargアクセスを防ぐためにモジュールの環境が変更されていない必要があります。

モジュールがコマンドライン引数に依存できるようにするのが良い設計であるかどうかという重要な全体的な設計の質問を開いたままにしました。引数の解析を提供するモジュールがそのように処理したい場合があることはわかりますが、それでも、オプションのパーサーに、グローバルから直接読み取るのではなく、呼び出し元から引数を渡すことをお勧めします。これにより、たとえば、環境変数や構成ファイルから引数を取得することも簡単になります。

于 2010-09-20T20:54:03.847 に答える