下例是乙個更高階的示例,我們將編寫乙個呼叫lua函式的包裝程式,其中用到了c語言的stdarg的機制。這個包裝函式名為call_va, 它接受乙個待呼叫的全域性函式的名字,乙個描述引數型別和結果型別的字串、引數列表、以及存放結果的一組指向變數的指標。函式call_va會處理有關api的所有細節。
#include
void
call_va
(lua_state *l,
const
char
*func,
const
char
*sig,..
.)}}
endargs:
nres =
-nres;
while
(*sig)
case
'i':
case
's':
default
:error
(l,"invalid option (%c)",*
(sig-1)
);} nres++
;}
Lua程式設計(三)
通過昨天用lua程式語言解決八皇后問題,我對於lua語言的程式編寫有了大致的了解。今天開始了解lua的數值相關概念。在lua5.3中為數值格式提供了兩種選擇 一種為64位的integer型別,另一種則是雙精度的float型別。如果是資源受限的平台,如微控制器等我們可以使用精簡的32位數值格式。lua...
Lua程式設計(四)
字串是用於表示文字的手段。lua語言提供的字串是由一串位元組組成的序列。每個字元用8個位元位來儲存。雖然lua支援用任意一種方法來儲存unicode字串,但是最好在一切可能的情況下優先使用utf 8編碼。需要注意的是lua中的字串是不可變值,不能直接修改字串中的某個字元,僅能通過建立乙個新的字串來達...
Lua程式設計(七)
函式是對語句和表示式進行抽象的主要方式,呼叫函式時應使用一堆圓括號把引數列表括起來,即使不需要引數,也需要一對空括號 lua語言也為物件導向風格的呼叫 object oriented call 提供了冒號操作符。形如 o foo x 意為呼叫物件o的foo方法。乙個函式定義具有乙個函式名 name ...