回調的技巧 回呼函數能夠提供參數化的資料結構處理方式. 計算能夠計算個數的表的Values和 function sumover(t, fcn) --fcn(v) local sum = 0; table.foreachi(t, function(i,v) sum = sum + (fcn(v) or 0); end); return sum; end 這個sumover函數, 你可以為他傳遞一個數字索引的表和fcn回掉函數做為參數,
函數是什麼 在LUA中, 一個函數是一個簡單的變數。從LUA的文檔來看: The statement function f () ... end translates to f = function () ... end 那意味著任意一個函數能被其它的任意一個函數通過一個簡單的分配所替代。把這個記在心裡,它將變得很容易去“Hook”,或者是添加你自己的函數到一個預先定義好的函數中。 # Hook
遍曆表的方式 第一, 我們可以簡單的遍曆表中有效索引的值. for i=1,table.getn(tbl) do local v=tbl[i]; ... end 第二, 或許這樣的方式更加常見. for i,v in ipairs(tbl) do ... end 第三, 你可以使用內建方法, table.foreachi table.foreachi(tbl, function(i,v) ... end); Stylistically, 我更傾向於第三種方法, 簡潔明了.
Redhat RHCT (Red hat certified technician) , RHCE (red hat ceritfied engineer ) , RHCA (Red Hat Certified Architect)Sun JavaSCJP Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055)SCJD
本文討論了參數和傳回值的安全有效處理方式. This HOWTO deals with pre-hooks. For details on post-hooks, see 如何安全的Post-Hook一個函數. For more information on the actual hooking of functions, see 如何Hook一個函數. 你通常這樣使用麼 Meet Joe Average Hook: local orig_foo = foo function
1.不定參數 例e07.lua -- Functions can take a -- variable number of -- arguments. function funky_print (...) for i=1, arg.n do print("FuNkY: " .. arg[i]) end end funky_print("one", "two") 運行結果 FuNkY: one FuNkY: two 程式說明 * 如果以...為參數,
有時你需要寫簡潔的代碼, 當你只需要迭代表的value時ipairs顯的有些羅唆, 我們需要更簡短的格式. 參看下面2個函數. local function valuesIteratorFcn(_s, var_1) _s.index= _s.index + 1; return _s.tbl[_s.index]; end function values(tbl) local _s = {index=0,tbl=tbl}; return valuesIteratorFcn, _s;
迭代器的提示 使用排序好的Key迭代 你曾有過這樣的需求麼 for k,v in pairs(t) do 按照排序的key來遍曆表. function sortedpairs(t,comparator) local sortedKeys = {}; table.foreach(t, function(k,v) table.insert(sortedKeys,k) end); table.sort(sortedKeys,comparator); local i =