lua腳本基礎(chǔ)
1.界面的編寫(xiě)很大一部分可以通過(guò)腳本來(lái)實(shí)現(xiàn), 可以修改加腳本而不必重新編譯程序, 可以節(jié)省界面設(shè)計(jì)的時(shí)間
2.lua腳本設(shè)計(jì)目的是為了嵌入應(yīng)用程序中, 為應(yīng)用程序提供靈活的擴(kuò)展功能
3.lua腳本可以被c/c++調(diào)用, 也可以調(diào)用c/c++的函數(shù), 也可以代替xml, ini等文件, 容易理解和維護(hù)
4.lua由標(biāo)準(zhǔn)c編寫(xiě)而成, 解釋器不過(guò)200k, 在目前所有腳本引擎中, lua的速度最快, 是作為嵌入式腳本的最佳選擇
5.lua_open() 返回一個(gè)指向lua解釋器的一個(gè)指針
6.luaL_openlibs() 裝載lua庫(kù), 提供了一些簡(jiǎn)單的函數(shù), 如print
7.luaL_dofile() 執(zhí)行腳本
8.lua_close() 關(guān)閉lua
9.相關(guān)頭文件:
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
    #pragma comment(lib, "lua5.1.lib") //5.1版本的lua庫(kù)
    lua_State* L; //lua解釋器指針
    L = lua_open(); //初始化lua
    luaL_openlibs(L); //載入lua基本庫(kù)
    luaL_dofile(L, "test.lua"); //執(zhí)行腳本
    lua_close(L); //清除lua
10.解釋器加載lua腳本程序庫(kù): dofile("test.lua")
   然后就可以執(zhí)行test.lua里面的函數(shù)了
11.lua_getglobal(L, "add"); //lua庫(kù)的add全局函數(shù)
    luapushnumber(L, x); //將x壓棧
    luapushnumber(L, y); //將y壓棧
    lua_call(L, 2, 1); //調(diào)用前面的add函數(shù), 2個(gè)參數(shù), 1個(gè)返回值
    int ret = (int)lua_tonumber(L, -1); //取得返回值
    lua_pop(L, 1); //彈出棧
12.lua的注釋:
    單行注釋: 從"--"到行末
    多行注釋: 從"--[["到"]]", 當(dāng)重新啟用這段代碼時(shí)
    技巧:
    --[[
    語(yǔ)句
    --]]
    這樣注釋后, 只要在"--[["前加一個(gè)"-", 那么語(yǔ)句就可以執(zhí)行了
13.lua io輸入:
    a = io.read("*number") --read a number
14.lua中唯一一種數(shù)據(jù)結(jié)構(gòu) table
15.進(jìn)入lua交互模式, 執(zhí)行os.exit()時(shí)退出交互模式
    C:\>lua
    Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
    > os.exit()
   
    C:\>
16.用lua -i參數(shù)來(lái)執(zhí)行l(wèi)ua解釋器時(shí), 運(yùn)行完lua程序后將進(jìn)入交互式模式
   -i對(duì)于調(diào)試收工測(cè)試尤為有用
   用lua -e參數(shù), 可以直接在命令行中輸入代碼:
    C:\>lua -e "print(math.sin(12))"
    -0.53657291800043
   用lua -l 可以加載庫(kù)文件:
    lua -i -l a -e "x = 10" --命令行下加載庫(kù)a, 執(zhí)行x=10操作, 執(zhí)行完后進(jìn)入交互模式
   只要定義了一個(gè)名為"_PROMPT"的全局變量, 解釋器就會(huì)用它的值作為交互模式的命令提示符
    lua -i -e "_PROMPT=' lua>'"
17.lua的保留字 --關(guān)鍵字:
   and break do else elseif
   end false for function if
   repeat return then true until
   while
18.全局變量不需要聲明, 只需要將一個(gè)值賦予一個(gè)全局變量就可以創(chuàng)建了, 在lua中訪問(wèn)一個(gè)未初始化的變量不會(huì)出錯(cuò), 結(jié)果是一個(gè)nil值
   要?jiǎng)h除一個(gè)變量, 可以把這個(gè)變量賦值為nil
19.在交互模式中, 如果要打印任何表達(dá)式的值, 可以用等號(hào)開(kāi)頭, 并跟隨一個(gè)表達(dá)式:
    = math.sin(3)
20.lua有8中基礎(chǔ)的類型
   nil(空) boolean(布爾) number(數(shù)字) string(字符串)
   userdata(自定義類型) function(函數(shù)) thread(線程)
   table(表)
   函數(shù)與type可以根據(jù)一個(gè)值返回其類型的名稱