関数を使えばこのメタメソッドの仕組みを回避してデータの取得をすることができます。__callこれはテーブルに対して関数呼び出しの形(テーブル(~))が用いられた場合に使われます。形で呼び出すことができるものでなければなりません。__modeこれは弱い参照を保持するテーブルを作る場合に使われます。フィールドの値は文字列でなければなりません。普通のテーブルの場合、キーも値もガベージコレクションの対象にはなりません。このフィールドの値に文字「k」が含まれている場合、弱い参照でないものが含まれいなければ、キーはガベージコレクションの対象になります。このフィールドの値に文字「v」が含まれている場合、対応するキーと値の両方がテーブルから削除されます。テーブルがメタテーブルとして使われた後にこのフィールドが変更された場合の挙動については定義されていません。メタテーブルの他のフィールドには以下のものがあります。使うべきメタメソッドとして左の項を見てそれから右の項をみます。変数とは値を格納する場所です。テーブルのフィールドの三つです。名前(または識別子)は大域変数や局所変数(関数の引数を含む)を表します。キーワード「local」を使って明示的に宣言されていない変数はすべて大域変数であるとみなされます。初期化されたのと同じ振る舞いをします。標準のテーブルに保存されます。この変数は「_G」としてアクセス可能であり、しばしば使われます。この変数にメタテーブルを設定することもできます。同変数のフィールドの値を参照したりフィールドに値を設定する時だけでなく、大域変数の値を参照したり大域変数に値を代入する時にも呼ばれます。関数で変更することができます。これら二つの関数が利用可能であるかどうかについては厳しく制限されています。局所変数とは構文スコープを持つ変数のことです。詳しくは局所変数宣言を御覧ください。式というのは何かの値を持つもののことを言います。括られたもの何かの式に単項演算子が付されたもの二つの式が二項演算子で繋げられたものほとんどの演算子は一つの値を持ちます。式については不特定個数の値を持ちます。括った式の場合、最初の値を除く全ての値が失われます。式リストというのは複数の式がカンマで区切られたものを言います。カンマで区切られた最後の式以外のすべての値は式リストの値としては使われません。最後の式が持つすべての値は式リスト全体の値として使われます。あれば、これらの演算子は適切に機能します。どれかの値がテーブル型データで、なおかつ適切なメタメソッドが伴っていれば、そのメタメソッドが呼ばれます。指数は整数でなければなりません。言語の関係演算子は次のものです。関係演算子の評価結果はどんな場合も真偽値です。なくばこの演算子は両辺の値を比較します。nil、false/true、数値、文字列はそれぞれの方法で比較されます。両辺が関数であれば、二つが完全に同一の実体であるかどうかが見られます。メタメソッドを使って変更することができます。結果の単純な論理否定です。あればメタメソッドによって比較します。