工作积累的一些LUA函数

转自: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值