この文書の目的 Lua でもオブジェクト指向を実現することは周知の事実です。しかし、インスタンス生成のためのメソッド定義や、それぞれのインスタンスにどのようなメンバ変数やメソッドが備わっているのか、また、それらを適切に保護するコードを書くのは結構面倒な作業となります。 また、メソッドを記述する場合、メンバ変数にアクセスするためにいちいち self と書かなければならないもストレスがたまってしまいます。この文書では、以前書いた「self.name と書かなくても name だけでメンバ変数やメソッドにアクセスできるようにする方法」や、「メンバ変数やメソッド名を保護する」の応用として、Lua に class 文のようなものを導入してみます。 Lua では、関数の引数がテーブル 1 つであれば、文字列同様、関数呼び出しのカッコを省略することができます。今回はそれを活用し、オブジェクトの宣言っぽく