Lua-modules
Lua-モジュール
モジュールとは何ですか?
モジュールは、_require_を使用してロードできるライブラリに似ており、テーブルを含む単一のグローバル名を持っています。 このモジュールは、多数の関数と変数で構成できます。 これらの関数と変数はすべて、名前空間として機能するテーブルにラップされています。 また、適切に動作するモジュールには、必要に応じてこのテーブルを返すために必要な準備があります。
Luaモジュールの専門
モジュールでテーブルを使用すると、さまざまな方法で役立ち、他のLuaテーブルを操作するのと同じ方法でモジュールを操作できます。 モジュールを操作する機能の結果として、他の言語が特別なメカニズムを必要とする追加機能を提供します。 Luaのモジュールのこの無料のメカニズムにより、ユーザーは複数の方法でLuaの関数を呼び出すことができます。 それらのいくつかを以下に示します。
上記のサンプルコードでは、特別なコードを追加しなくても、Luaのプログラミングがどれほど柔軟であるかを確認できます。
require関数
Luaは、必要なすべてのモジュールをロードするために_require_と呼ばれる高レベル関数を提供しています。 モジュール上にロードする情報が多すぎるのを避けるため、可能な限りシンプルに保たれます。 require関数は、いくつかの値を定義するコードの塊としてモジュールを想定しています。実際には、関数または関数を含むテーブルです。
例
1つの関数に数学関数がある単純な例を考えてみましょう。 このモジュールをmymathと呼び、ファイル名をmymath.luaとします。 ファイルの内容は次のとおりです-
ここで、別のファイル(moduletutorial.luaなど)でこのLuaモジュールにアクセスするには、次のコードセグメントを使用する必要があります。
このコードを実行するには、2つのLuaファイルを同じディレクトリに配置する必要があります。または、パッケージパスにモジュールファイルを配置して、追加のセットアップが必要な場合もあります。 上記のプログラムを実行すると、次の出力が得られます。
覚えておくべきこと
- モジュールと実行するファイルの両方を同じディレクトリに配置します。
- モジュール名とそのファイル名は同じでなければなりません。
- require関数のモジュールを返すことはベストプラクティスです。したがって、他のタイプの実装を他の場所で見つけることもできますが、モジュールは上記のように実装することが望ましいです。
モジュールを実装する古い方法
package.seeallタイプの実装を使用する古い方法で同じ例を書き換えましょう。 これは、Luaバージョン5.1および5.0で使用されていました。 mymathモジュールを以下に示します。
moduletutorial.luaのモジュールの使用法を以下に示します。
上記を実行すると、同じ出力が得られます。 ただし、古いバージョンのコードを使用することをお勧めします。安全性が低いと想定されます。 Corona SDKのようなプログラミングにLuaを使用する多くのSDKは、これの使用を非推奨にしています。