LUA: lua基础.
生活随笔
收集整理的這篇文章主要介紹了
LUA: lua基础.
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
nil :它是一個類型且只有一個值nil.它的主要功能是區別于其他任何值.如果對一個全局變量賦值nil等同于刪除它.
條件測試中: LUA把 零值(0) 和 空字符串("") 當為true.
?
Lua版本unpack():
function unpack(theTable, index) index = index or 1; if theTable[index] then return theTable[index], unpack(theTable, index+1); end; end;?
Lua版本iterator:
function iterator(theTable) local i = 0; return function() i = i+1; return theTable[i] end; end;tb = {10, 20, 30}; iter = iterator(tb); while true do local element = iter(); if element == nil then break; end; print(element); end;output: 10 20 30?
Lua范圍for與iterator:
tb= {10, 20, 30};function iterator(theTable) local i = 0; return function() i = i + 1; return theTable[i]; end; end;for value in iterator(tb) do print(value); end;?
Lua版本具有復雜狀態的iterator:
local iterator;function allWords() local state= {line = io.read(), pos = 1}; return iterator, state; end;function iterator(state) while state.line do local s, e = string.find(state.line, "%w+", state.pos); if s then state.pos = e + 1; return string.sub(state.line, s, e); else state.line = io.read(); state.pos = 1; end; end; return nil; end;local itr, sta = allWords(); print(itr(sta));?
Lua版本協程:
function receive(prod) --接受數據. local status, value = coroutine.resume(prod); return value; end;function send(x) --發送數據. coroutine.yield(x); end;function producer() --生產者 return coroutine.create(function() while true dolocal x = io.read();send(x);endend)endfunction filter(prod) --過濾 return coroutine.create(function() --創建一個協程for line = 1, math.huge dolocal x = receive(prod);x = string.format("%5d %s", line, x);send(x);endend)endfunction consumer(prod) while true do local x = receive(prod) io.write(x, "\n"); end end?
Lua版本協程iterator:
function permgen(array, size) size = size or #array; if size <= 1 thencoroutine.yield(array);elsefor i=1, size do array[size], array[i] = array[i],array[size]; permgen(array, size-1); array[size], array[i] = array[i],array[size]; end end endfunction printResult(array) for index, value in ipairs(array) do io.write(array[index], " "); end io.write("\n"); endfunction permutations(array) local co = coroutine.create(function() permgen(array) end) return function() local code, result = coroutine.resume(co); return result; end endfor value in permutations({1, 2, 3}) do printResult(value); end?
轉載于:https://my.oschina.net/SHIHUAMarryMe/blog/873420
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的LUA: lua基础.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最近很火的百度MIP之 zblog改造
- 下一篇: truncate与delete的区别