Lua の C API を使用して C でメタテーブルを実装しています。__newindex
メソッドが値を返すことによって成功または失敗を報告する必要があるのか 、それともエラーを使用してこれを処理する必要があるのか 疑問に思います。
__index
withのコンテキストでは、値の検索に失敗したことを示しているようですが、 無視または手動エラーのスローを回避return 0
する同様の構造があるかどうか疑問に思います__newindex
Lua の C API を使用して C でメタテーブルを実装しています。__newindex
メソッドが値を返すことによって成功または失敗を報告する必要があるのか 、それともエラーを使用してこれを処理する必要があるのか 疑問に思います。
__index
withのコンテキストでは、値の検索に失敗したことを示しているようですが、 無視または手動エラーのスローを回避return 0
する同様の構造があるかどうか疑問に思います__newindex
Lua は、メタメソッドからの戻り値を想定していませんnewindex
。http://www.lua.org/manual/5.2/manual.html#2.4を参照してください。
失敗が致命的である場合は、メタメソッド内でエラーを発生させてください。
C から Lua に値を返すと、スタックにプッシュされた結果の数が示されます。0
メソッドの結果を使用して Lua で行われた割り当てを返す場合は、 になりますnil
。0
のコンテキストで戻るとき__index
は、値がスタックにプッシュされていないことを示しているだけです。nil
を押して戻すと、同じ結果が得られます1
。
同様に、C からの戻り値のコンテキストでは__newindex
、スタックにプッシュした結果の数を示します。