1. 字符串处理
去除字符串首尾的空格
function trim(s)
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
格式化字符串, 返回一个类似printf的格式化字符串
> print( string.format("the value is:%d",4) )
the value is:4
"…"操作符链接字符串
> print("\"Lua\"".." is a script program" .. " langue")
"Lua" is a script program langue
2. 函数
调用函数的时候,如果参数列表为空,必须使用()表明是函数调用。 当函数只有一个参数并且这个参数是字符串或者表构造的时候,()可有可无,例如
> print "Hello World" --> print("Hello World"
Hello World
函数闭包
当一个函数内部嵌套另一个函数定义时,内部的函数体可以访问外部的函数的局部变量,这种特征我们称作词法定界。
先看如下代码:
function fn()
local i = 0
return function() -- 注意这里是返回函数的地址,不是执行
i = i + 1
return i
end
end
c1 = fn() -- 接收函数返回的地址
print(c1()) --> 1 --c1()才表示执行
print(c1()) --> 2
有点类似于C++中的 静态局部变量, i每次调用的时候值会保持。
可以用来实现一个迭代器, 如:
array = {"Google", "Runoob"}
function elementIterator (collection)
local index = 0
local count = #collection
-- 闭包函数
return function ()
index = index + 1
if index <= count
then
return collection[index] -- 返回迭代器的当前元素
end
end
end
for element in elementIterator(array)
do
print(element)
end