メソッドとインデックス演算子 (整数インデックスを使用) の両方をサポートするには、ユーザーデータ オブジェクトが必要です。関数を介してメソッドをシミュレートせずに、共通のメタテーブルでこれを達成する方法はありますか?
metatable(object).__index
実際のメソッドを含むテーブルとmetatable(metatable(object).__index).__index
、インデックス演算子を実装する関数に設定することにより、メタテーブルをチェーンしてみました。ただし、その関数は__index
、元のオブジェクトではなく、最初のテーブルを引数として呼び出されます。メタメソッドが関数の場合、元のオブジェクトを渡す方がはるかに理にかなっているから__index
です。とにかく、__index
関数内のメソッド名を明示的にチェックせずに、私が望むものを達成する方法はありますか?