Lua 5.4 是 Lua 語言的一個版本,它提供了許多 C API 函式,這些函式允許開發者在 C 語言中嵌入和擴充套件 Lua 的功能。以下是一些常用的 Lua 5.4 C API 函式,以及它們的簡單示例:
-
lua_newstate - 建立一個新的 Lua 狀態。
lua_State *L = lua_newstate(0, 0); // 建立一個新的 Lua 狀態
-
lua_close - 關閉一個 Lua 狀態。
lua_close(L); // 關閉 Lua 狀態
-
lua_openlibs - 開啟 Lua 的標準庫。
lua_openlibs(L); // 開啟所有標準庫
-
lua_getglobal - 獲取全域性變數。
lua_getglobal(L, "myGlobal"); // 獲取名為 'myGlobal' 的全域性變數
-
lua_setglobal - 設定全域性變數。
lua_pushnumber(L, 42); // 將數字 42 推入棧 lua_setglobal(L, "myGlobal"); // 將棧頂的值設定為全域性變數 'myGlobal'
-
lua_pcall - 呼叫一個函式。
int status = lua_pcall(L, 0, LUA_MULTRET, 0); // 呼叫棧頂的函式 if (status != LUA_OK) { // 處理錯誤 }
-
lua_pushnumber - 將一個數字推入棧。
lua_pushnumber(L, 123); // 將數字 123 推入棧
-
lua_pushstring - 將一個字串推入棧。
const char *str = "Hello, Lua!"; lua_pushstring(L, str); // 將字串 "Hello, Lua!" 推入棧
-
lua_pushboolean - 將一個布林值推入棧。
lua_pushboolean(L, 1); // 將真值推入棧
-
lua_pushnil - 將 nil 推入棧。
lua_pushnil(L); // 將 nil 推入棧
-
lua_pop - 從棧中彈出元素。
lua_pop(L, 1); // 從棧中彈出一個元素
-
lua_newtable - 建立一個新的空表。
lua_newtable(L); // 建立一個新的空表
-
lua_settable - 將一個值設定到表中。
lua_pushstring(L, "key"); // 推入鍵 lua_pushnumber(L, 123); // 推入值 lua_settable(L, -3); // 將值設定到表中,表在棧的 -3 位置
-
lua_gettop - 獲取棧頂的索引。
int top = lua_gettop(L); // 獲取棧頂索引
-
lua_settop - 設定棧的頂部。
lua_settop(L, 0); // 將棧頂設定為 0
-
lua_load - 載入一個 Lua 指令碼。
int status = lua_load(L, my_reader, data, "script.lua"); if (status != LUA_OK) { // 處理錯誤 }
-
lua_register - 註冊 C 函式到 Lua 中。
lua_register(L, "myCFunction", myCFunction); // 註冊 C 函式