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