luasubの自動化
luasub、luacallの自動化 - senzogawaのNな日々を見て。
00.txt側のluacall命令をすっかり忘れていた私(まだ引きずってる)が言うのもなんですが。
私が組んだのは、こう。
-- グローバル環境、_Gで実行 function luasub(com_name, com_function) if type(com_name) ~= "string" then return nil end -- パラメータチェック 本当は、有効な文字列かどうかも見た方がいいんだけれども。 if type(com_function) ~= "function" then return nil end -- パラメータチェック local func_name = "NSCOM_"..com_name if type(_G[func_name]) == "function" then -- 重複宣言チェック。 NSOkBox(com_name.."は既に宣言されています。", "luasub") return nil end _G[func_name] = com_function -- Lua側登録 NSExec("_luasub "..com_name) -- NScripter側登録 return true end
で、こんな風に使う。
luasub("new_command", function() -- なんか処理 end)
もしくは、
function hoge() -- なんか処理 end luasub("new_command", hoge)
利点としては、
- module環境下でも簡便にNSCOM命令を定義できる。(ので、遠いところに書いたりしなくてよい)
- NScripter側のluasub宣言を忘れない。
- 重複宣言チェックができる。
- NSCOM_xxx自体はグローバルでも、その本体のfunctionがmodule下にあるので、module内のlocal変数にリーチしやすい。
くらいでしょうか。
まあ、速度度外視なのは変わりませんが。