オブジェクト指向のサンプル

Foo = {}
function Foo:meth1()
  print(self)
end
function Foo:new()
  return setmetatable({}, {__index = Foo})
end

foo = Foo:new()
foo:meth1()

--実行結果
table: 003CB908

上記はオブジェクト指向の最小のサンプル。第一引数にselfを渡す必要ないのであれば、「:」(コロン)を使用する必要ないのだが、メソッドを呼び出す場合は、必ず「.」でなく「:」にするように統一した方が分かりやすいと思う。