2

Lua の C API を使用して C でメタテーブルを実装しています。__newindexメソッドが値を返すことによって成功または失敗を報告する必要があるのか​​ 、それともエラーを使用してこれを処理する必要があるのか​​ 疑問に思います。

__indexwithのコンテキストでは、値の検索に失敗したことを示しているようですが、 無視または手動エラーのスローを回避return 0する同様の構造があるかどうか疑問に思います__newindex

4

2 に答える 2

2

Lua は、メタメソッドからの戻り値を想定していませんnewindexhttp://www.lua.org/manual/5.2/manual.html#2.4を参照してください。

失敗が致命的である場合は、メタメソッド内でエラーを発生させてください。

于 2013-08-09T11:40:02.533 に答える
1

C から Lua に値を返すと、スタックにプッシュされた結果の数が示されます。0メソッドの結果を使用して Lua で行われた割り当てを返す場合は、 になりますnil0のコンテキストで戻るとき__indexは、値がスタックにプッシュされていないことを示しているだけです。nilを押して戻すと、同じ結果が得られます1

同様に、C からの戻り値のコンテキストでは__newindex、スタックにプッシュした結果の数を示します。

于 2013-08-09T09:00:19.027 に答える