初版は Lua 5.0 向けに書かれました。最新版では依然として広く関連がありますが、若干の相違があります。
第 4 版は Lua 5.3 を対象としており、Amazon およびその他の書店で購入できます。
書籍を購入することで、Lua プロジェクトもサポートしていただけます。


15 – パッケージ

多くの言語では、Modula の「モジュール」、JavaやPerlの「パッケージ」、C++の「名前空間」など、グローバル名の空間を組織化するためのメカニズムを提供しています。これらのメカニズムはそれぞれ、パッケージ内で宣言された要素の使用、可視性、およびその他の詳細に関していくつかのルールが異なります。それでも、すべてに、異なるライブラリで定義された名前の衝突を回避するための基本的なメカニズムがあります。各ライブラリは独自のネームスペースを作成し、このネームスペース内で定義された名前は、他のネームスペースの名前とは干渉しません。

Lua では、パッケージ用の明白なメカニズムは提供されていません。ただし、その言語が提供する基本的なメカニズムを使用して、簡単に実装できます。主なアイデアは、基本ライブラリと同様、各パッケージを表すにはテーブルを使用することです。

テーブルを使用してパッケージを実装することの明らかな利点は、他のどのテーブルと同様にパッケージを操作し、Lua の全機能を使用して追加の機能を作成できることです。ほとんどの言語では、パッケージはファーストクラスの値ではありません(つまり、変数に格納したり、関数に引数として渡したりすることはできません)。したがって、これらの言語では、パッケージで行う追加のトリックごとに特別なメカニズムが必要です。

Lua では、パッケージは常にテーブルとして表現しますが、パッケージを作成するにはいくつかの異なる方法があります。この章では、これらの方法の一部について説明します。