Lua程序设计入门

Lua程序设计入门

函数设计

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
喜欢就支持以下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容