lua學習筆記

2021-06-05 10:21:12 字數 2193 閱讀 3578

近日時間比較充裕,學習一下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...