近日時間比較充裕,學習一下lua語言,順便寫下筆記,方便以後加深學習。
c/c++呼叫lua動態庫及標頭檔案位址(用於c/c++嵌入lua指令碼解析):
也可以到或找適合自己的版本。
一、"hello world"
哈哈,先使用經典的hello world帶進門
1.在「執行」鍵入cmd開啟dos視窗,並將當前目錄跳轉到lua的目錄下(我的是在c:\lua-5.2_win32_bin)
2.在lua目錄下建立一下文字檔案(test.txt)並加入內容
print("hello world")
3.回到dos視窗,輸入執行命令lua52.exe test.txt
如圖:二、迴圈語句
在test.txt加入
for i=1,10,2 do
print("i = " .. i)
end在dos視窗輸入命令lua52.txt test.txt如圖
注:for語句中i = 2, 10,2是表示從1開始,每次遞增2,到10結束(包含10)
三. 變數
lua 的變數是不需要宣告型別的
a = 5
b = "hello"
print(a.. " ".. b)
執行列印出來的結果如下
四、table
lua的資料結構和陣列都可以由table來實現,例項**如下:
aa = {}
aa["xx"] = 11
aa[3] = 22
print(aa["xx"] .." --".. aa[3])
輸出結果:
五、函式
lua 的函式語法為
function 函式名(引數)
實現...
end下面為一段例項
function add(a, b)
sum = a + b
return sum
endprint("10 + 20 = "..add(10,20))
執行結果如下:
六、c/c++呼叫lua指令碼
1.建立工程
(1).使用vs2005建立乙個c++ console工程
(3).在工程中加入對lua51.lib的依賴,可以直接在**裡寫如#pragma comment(lib, "lua51.lib"),出可以將其到到工程設定的依賴專案中。
2.c/c++呼叫lua的流程
c/c++調lua流程大概如下:
/*開啟lua*/
lua_state *l = lua_open();
/*開啟全部的庫*/
lual_openlibs(l);
/*執行lua指令碼、呼叫lua資訊*/
.../*關閉lua*/
lua_close(g_l);
3. 建立一下test.txt的文字並寫入如下**
function add(a, b)
sum= a+b
return sum
end
a1 = "hello world"
b1 = 50
4. 在vc工程中寫入如下測試**,已經帶有較詳細注釋
#include "stdafx.h"
#include
#include
extern "c"
#pragma comment(lib, "lua51.lib")
lua_state *g_l;
/*呼叫lua的add函式*/
int lua_add(int a, int b)
int _tmain(int argc, _tchar* argv)
/*獲取a1的值*/
lua_getglobal(g_l,"a1");
if(lua_isstring(g_l,-1))
/*關閉lua*/
lua_close(g_l);
return0; }
執行結果:
100call lua add(1,2) = 3
b1 = 50
a1 = hello world
總結,學習所花時間,很多沒有學深學細,總體來說這門語言入門比較快,易學。沒有實際的專案經驗還不能深刻理解它的優勢所在。
Lua學習筆記 lua堆疊
首先了解一下c 與lua之間的通訊 假設在乙個lua檔案中有如下定義 hello.lua檔案 請注意紅色數字,代表通訊順序 1 c 想獲取lua的myname字串的值,所以它把myname放到lua堆疊 棧頂 以便lua能看到 2 lua從堆疊 棧頂 中獲取myname,此時棧頂再次變為空 3 lu...
Lua 學習筆記
1 關於table lua 中的 table 是python 中的 list 和 dict 的混合體。t 相當於 t 簡單的看,實際上完全相當於 python 中的 dict 不過實際對於鍵為整數的,是放在 list 中的,方便快速索引。當然基於節省記憶體的考量,對於跳躍的大整數鍵,依然是放在 di...
lua學習筆記
lua users.org lua manual luagit chunkspy openresty nginx lua module lua 中值為nil時,相當於c語言的空指標,還是需要小心謹慎。table使用有幾個易錯點,請看下圖 local m m search key m result v...