--[[ Luaでのオブジェクト指向 setmetatable ( インスタンス, { __index=クラス } ) setmetatableを使うと、テーブルをオブジェクトのように扱うことが出来ます。 上の例ではインスタンスとクラスはそれぞれテーブルです。 基本 インスタンスのfunctionを呼び出すと、クラスのfunctionが呼び出されるようになります。 例 (もっといい例求む) functionの後ろの:は自分自身をあらわす引数selfを使うという意味です。 selfは:の前を表します。o:get()ならoを、a:get()ならaです。 --]] Point = {} Point_mt = { __index=Point } function Point.new(x, y) tmp = {} tmp.x = x tmp.y = y return setmetatable (tmp, Point_mt) end function Point:set(x, y) self.x = x self.y = y end function Point:get() return self.x, self.y end function test() o = Point.new(0, 0) a = Point.new(10, 10) --いくつも作れる o:set(-10, -10) --oからもPointの関数setが呼び出せる。 --この場合変更されるのはo.xとo.y end