グローバルな 'setmetatable' (nil 値) または同様のものを呼び出そうとすると、lua がエラーを報告する。
2022-02-20 11:27:52
モジュールを増やしてluaを書くと、このミスをしやすいのでメモです。 setmetatableは_Gテーブルの下に実装されているメソッドですが、モジュールを使うと環境ごとスタックされるので、グローバルメソッドが見れないというエラーになります。で、一般的にmodule(... , package.seeall)と書くのは、グローバルな環境を見えるようにするためです。
しかし、setmetatable(_M, {__index = xxx}) を使用する場合、この xxx が nil の場合はどうなるのだろうという疑問が生じます。この方法では、メタテーブルとしてのモジュールにnull値を代入してしまうので、環境全体が見えなくなり、当然、entry to call global 'setmetatable'(a nil value)といったエラーが報告されることになります。
関連
-
[解決済み] Lua: グローバルな 'mapfinishes' (nil 値) に対して演算を実行しようとした。
-
[解決済み] LUA がグローバルな nil 値のインデックスを作成しようとした
-
[解決済み] .luaスクリプトを実行するにはどうしたらいいですか?[クローズド]。
-
[解決済み] "Unable to cast value to Object" エラーメッセージ
-
[解決済み] Luaスクリプトのメモリ使用量を制限する?
-
[解決済み] Luaでのインクリメント
-
[解決済み] 何をするのか? for i=1,select('#',...)
-
[解決済み] Lua が nil を呼び出そうとした
-
Lua5.3の落とし穴
-
luaのエラーまとめ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Luaテーブルのすべての要素を削除する方法は?
-
[解決済み] Lua 5.1の__callメタメソッドは、実際にはどのように動作するのでしょうか?
-
[解決済み] Luaにおける演算子~=の意味とは?
-
[解決済み] WoW Lua - 1.13でスペルランクを取得する方法 (クラシック)
-
[解決済み] attempt to index upvalue」の意味を教えてください。
-
[解決済み] LuaでNewLine( \n) alternative?
-
[解決済み] トーチ[cpuType]の文法説明
-
[解決済み] Luaでネストしたテーブルと数値キー
-
lua 5.2 で発生する可能性のあるいくつかのエラー
-
lua loadlib 関数がグローバルな 'loadlib' (nil 値) を呼び出そうとする