转自:http://cjbskysea.blogbus.com/logs/53935855.html
function for_each(t, func)
for i in t do func(i) end
end
-------------------------------------------------------------
function map(t, func)
local newt = {}
for i,v in pairs(t) do
newt[i] = func(v)
end
return newt
end
-------------------------------------------------------------
--Split a string by specified char or chars
function SplitString(SrcString, Separator)
local nFindStartIndex = 1
local nSplitIndex = 1
local tSplitArray = {}
while true do
local nFindLastIndex = string.find(SrcString, Separator, nFindStartIndex)
if not nFindLastIndex then
tSplitArray[nSplitIndex] = string.sub(SrcString, nFindStartIndex, string.len(SrcString))
break
end
tSplitArray[nSplitIndex] = string.sub(SrcString, nFindStartIndex, nFindLastIndex - 1)
nFindStartIndex = nFindLastIndex + string.len(Separator)
nSplitIndex = nSplitIndex + 1
end
return tSplitArray
end
-- 用法:第二个参数可以是多个字符,但是不能是Lua正则表达式。
-- local t = Split("chen,jian,bin", ",")然后t里面就是
-- chen
-- jian
-- bin
-------------------------------------------------------------
function CopyFile(SrcFile, DesFile)
local file = io.open(SrcFile, "r");
assert(file);
local data = file:read("*a"); -- 读取所有内容
file:close();
file = io.open(DesFile, "w");
assert(file);
file:write(data);
file:close();
end
-------------------------------------------------------------
function TableFind(t, e)
local s = table.concat(t, ",")
s = ',' .. s .. ','
local start,finifh= string.find(s, ',' .. e .. ',')
if start~=nil and finifh~=nil then
return true
end
return false
end
-------------------------------------------------------------
function Switch(selector, t, default)
assert (type(t) == "table", "Error!")
local func = t[selector]
if func ~= nil then
assert(type(func) == "function", "Error!")
func()
else
if type (default) == "function" then
default()
end
end
end
--测试
function action_1()
print "action 1"
end
function action_2()
print "action 2"
end
function action_a()
print "action 'a'"
end
actions =
{
[1] = action_1,
[2] = action_2,
["a"] = action_a,
}
function default ()
print "call default function"
end
Switch (1, actions, default)
Switch (2, actions, default)
Switch ("a", actions, default)
Switch (3, actions, default)
--结果:
action 1
action 2
action 'a'
call default function