函数设计
function maximum(a)
return a,a + 1 --返回多个参数--
end
print(maximum(3))
function add(...)
local s = 0
for i,v in ipairs{...} do --{...}表示一个由所有变长参数构成的数组
s = s + v
}
end
return s
end
print(add(3,4,5,6))
--计算平均数--
function average(...)
result = 0
local arg = {...}
for i,v in ipairs(arg) do
result = result + v
end
print("length:"..#arg)
return result/#arg --#arg 获取arg的长度
end
print("average:"..average(10,5,3,4,5,6))
function average(...)
result = 0
local arg = {...}
for i,v in ipairs(arg) do
result = result + v
end
--使用select来获取可选参数的数量
print("arg:"..select('#',...))
return result/select("#",...)
end
print("average:",average(10,5,3,4,5,6))
变长参数,固定参数必须放在变长参数之前
unction fwrite(fmt,...)
return io.write(string.format(fmt,...))
end
fwrite("runoob\n")
fwrite("%d%d\n",1,2)
select("#",...) 返回可变参数的长度
select(n,...) 用于返回从起点n开始到结束位置的所有参数列表
function f(...)
a = select(3,...)
print(a)
print(select(3,...))
end
f(1,2,3,4)
运算符
关系运算符:
逻辑运算符
其他运算符
运算符的优先级
字符串
字符串操作
string.upper(argument) --字符串全部转为大写字母
string.lower(argument) --字符串全部转为小写字母
string.gsub(mainString,findString,replaceString,num) --字符串替换
string.find(str,substr,[init,[end]]) --字符串查找
string.reverse(arg) --字符串反转
string.format(...) --返回一个类似printf的格式化字符串
string.char(arg) --将整型数字转为字符并连接
string.len(arg)
string.rep(string,n) --返回字符串string的n个拷贝
string.gmatch(str,pattern) --迭代函数,返回一个在字符串str找到的下一个符合pattern描述的子串
string.match(str,pattern,init)
字符串截取
string.sub(s,i[,j]) --s:要截取的字符串;i:开始位置;j结束位置,默认为-1,最后一个字符
string.byte(arg[,int]) -- byte 转换字符为整数值(可以指定某个字符,默认第一个字符)
Lua数组
array = {"lua","tutorial"}
--没有索引则返回nil
for i = 0,3 do
print(array[i])
end
array = {}
for i = -2,2 do
array[i] = i *2
end
for i = -2,2 do
print(array[i])
end
多维数组
array = {}
for i = 1,3 do
array[i] = {}
for j = 1,3 do
array[i][j] = i * j
end
end
for i=1,3 do
for j = 1,3 do
print(array[i][j])
end
end
迭代器
ipairs()
:仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到集合中出现的第一个不是整数的 key。pairs()
:能遍历集合的所有元素。即 pairs 可以遍历集合中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil。
local tabFiles = {
[1] = "test2",
[2] = "test3",
[4] = "test1"
}
--可以打印所有元素
for k,v in pairs(tabFiles) do
print(k,v)
end
local tabFiles = {
[1] = "test2",
[2] = "test3",
[4] = "test1"
}
--只打印前面两个,后一个由于索引不是升序,不能打印
for k,v in ipairs(tabFiles) do
print(k,v)
end
自己编写一个迭代器
function iter(maxLocation,currentLocation)
--小于maxLocation就继续迭代
if currentLocation < maxLocation then
currentLocation = currentLocation + 1
return currentLocation,currentLocation * 2
end
end
for k,v in iter,4,-1 do
print(k,v)
end
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容