LUAピック(コンパイル-デバッグ-実行)
3841 ワード
(dofile - loadfile)
dofileはLUAソースコードからchunkを読み込んでバイトコードにコンパイルして実行し、loadfileはバイトコードを実行します.
(loadstring)
loadstringはloadfileと似ていますが、ファイルからchunkを読み込むのではなく、1つの列から読み込むだけです.
(require)
Luaは、実行ライブラリをロードするための高度なrequire関数を提供します.大雑把に言えばrequireとdofileは同じ機能を完成したが、2つの違いがある:1.requireはディレクトリロードファイルを検索します.requireは、ファイルがロードされているかどうかを判断し、同じファイルを繰り返しロードしないようにします.上記の特徴のため、requireはLuaでライブラリをロードするより良い関数です.
(C Packages)
luaプログラムでloadlibを使用してダイナミックライブラリをインポートし、エラーが発生しました
attempt to call global 'loadlib' (a nil value)
修正方法:
luaconf.hファイルで、#undef LUA_COMPAT_LOADLIBを#define LUAに変更COMPAT_LOADLIBはluac実行可能ファイルを再コンパイルします.OK!!!
(異常とエラー処理およびtraceback)
Luaでエラーを処理する必要がある場合は、pcall関数を使用してコードをカプセル化する必要があります.
>lua -e "io.stdout:setvbuf 'no'""test.lua"stack traceback: test.lua:3: in function 'foo' test.lua:9: in main chunk [C]: ?lua: test.lua:9: string expectedstack traceback: [C]: in function 'error' test.lua:4: in function 'foo' test.lua:9: in main chunk [C]: ?>Exit code: 1
転載先:https://www.cnblogs.com/mark-huang/archive/2013/05/03/3058539.html
dofileはLUAソースコードからchunkを読み込んでバイトコードにコンパイルして実行し、loadfileはバイトコードを実行します.
function dofile (filename)
local f = assert(loadfile(filename))
return f()
end
(loadstring)
loadstringはloadfileと似ていますが、ファイルからchunkを読み込むのではなく、1つの列から読み込むだけです.
local s = "print('LUA')"
assert(loadstring(s))()
(require)
Luaは、実行ライブラリをロードするための高度なrequire関数を提供します.大雑把に言えばrequireとdofileは同じ機能を完成したが、2つの違いがある:1.requireはディレクトリロードファイルを検索します.requireは、ファイルがロードされているかどうかを判断し、同じファイルを繰り返しロードしないようにします.上記の特徴のため、requireはLuaでライブラリをロードするより良い関数です.
(C Packages)
local path = "/usr/local/lua/lib/libluasocket.so"
local f = loadlib(path, "luaopen_socket")
luaプログラムでloadlibを使用してダイナミックライブラリをインポートし、エラーが発生しました
attempt to call global 'loadlib' (a nil value)
修正方法:
luaconf.hファイルで、#undef LUA_COMPAT_LOADLIBを#define LUAに変更COMPAT_LOADLIBはluac実行可能ファイルを再コンパイルします.OK!!!
(異常とエラー処理およびtraceback)
Luaでエラーを処理する必要がある場合は、pcall関数を使用してコードをカプセル化する必要があります.
local status, err = pcall(function () error({code=121}) end )
print(err.code) --> 121
function foo (str)
if type(str) ~= "string" then
print(debug.traceback())
error("string expected", 2)
end
end
foo(LUA)
>lua -e "io.stdout:setvbuf 'no'""test.lua"stack traceback: test.lua:3: in function 'foo' test.lua:9: in main chunk [C]: ?lua: test.lua:9: string expectedstack traceback: [C]: in function 'error' test.lua:4: in function 'foo' test.lua:9: in main chunk [C]: ?>Exit code: 1
転載先:https://www.cnblogs.com/mark-huang/archive/2013/05/03/3058539.html