lua table02(个人笔记)

-- 表
a = {}										-- 可以混用存储
x = "name" 

a[1] = 6 a[2] = 7 a[3] = 8 a[4] = 9 		-- 数组 同前面(days = {"sunday","monday",tuseday})
a[x] = "tap4fun"	a["age"] = 66			-- map  同前面(days = {x = 10,y = 9,"three" = 8})

a.x		-- 获取方法1
a[x]		-- 获取方法2

-- 遍历表
t = {10,print,x = 12,y = 14}
-- pairs 遍历集合的所有元素 不是顺序获取
for k, v in pairs(t) do
	print(k,v)
end
-- ipairs 序号需要是整数 不能返回 nil 升序遍历
for k, v in ipairs(t) do
	print(k,v)
end
-- #t 升序遍历
for k = 1, #t do
	print(k,t[k])
end


table.insert(a,1,15) 		-- 开头添加15这个元素
table.insert(a,8)			-- 末尾添加8这个元素
table.remove(a,1) 			-- 删除1这个位置元素
table.remove(a)				-- 删除末尾元素

table.move(a,1,#a,2)		-- 移动表a位置1到最后的元素到,2号位置后(相同表头添加了一个新位置)
table.move(a,2,#a,1)		-- 整体向前移动一个位置(相当于删除第一个元素)

-- 函数
function showA(a)
	return a "name"
end

s ,e = showA("hello") 		-- 返回多个参数

-- 可变传入参数
function add(...)
	local s = 0				-- local 局部变量,仅在调用方法的时候使用
	for _,v in ipairs(...) do
		s = s + v
	end
	return s
end

print(select(1,"a","b","c"))		-- 获取是可变参数位置1以后的所有参数(包括1)
print(select(3,"a","b","c"))		-- 获取是可变参数位置3以后的所有参数(包括3) c
print(select("#","a","b","c"))		-- 获取的是可变参数的长度

-- f(table.unpack(a)) 直接把a里面的元素变成传入的参数
m, n = table.unpack{10,20,30}		-- unpack 返回数组内的所有元素 m = 10, n = 20 (30舍弃)

-- io 操作
-- [[
io.read(arges) == io.input()
io.write(arges) == io.output()
]]
local f = io.open(filename,"r")		-- 开启对一个文件的io操作
local t =  f:read("a")				-- 读取整个文件
f:close()							-- 关闭流

-- 控制结构
if op == "+" then
	r = a + b
elseif op == "-" then
	r = a - b
else
	error("run error")
end

-- while
local i = 1
while a[i] do
	print(a[i])
	i = i + 1
end

-- 除了java常用的break,return.还有goto(打点,在逻辑中跳到你想要的位置重新运行)
while a[i] do
	if i > 10 then goto s1
	elseif i == 10 then goto s2
	else goto continue
	::s1::
	i = i + 1
	::s2::
	i = i + 2
	::continue::
end

-- repeat until(do while) 直到条件不满足 跳出
local line
repeat	
	line = io.read()
until line ~= ""
print(line)



-- #用于获取长度,字符串或者数组。(一般不用于表)
len = "www.runoob.com"
print(#len)

-- 变量值相互交换
x, y = y, x

-- nil 会判断是false,可以用于赋值表达式(从左到右,不为空的赋值进去)
local data = v1 or v2 or v3 or v4

--[[
赋值策略
a. 变量个数 > 值的个数             按变量个数补足nil
b. 变量个数 < 值的个数             多余的值会被忽略
]]
a, b, c = 0, 1
print(a,b,c)             
 
a, b = a+1, b+1, b+2     
print(a,b) 

-- … 可变参数
--select('#', …) 返回可变参数的长度
--select(n, …) 用于返回 第n位置的参数

    function foo(...)  
        for i = 1, select('#', ...) do  -->获取参数总数
            local arg = select(i, ...); -->读取参数
            print("arg", arg);  
        end  
    end  
 
    foo(1, 2, 3, 4);

-- table 里的内容拼接在一起(fruits用,连接。只拼接第2-3位置的参数)
print("连接后的字符串 ",table.concat(fruits,", ", 2,3))
-- 模块
-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}
 
-- 定义一个常量
module.constant = "这是一个常量"
 
-- 定义一个函数
function module.func1()
    io.write("这是一个公有函数!\n")
end
 
local function func2()
    print("这是一个私有函数!")
end
 
function module.func3()
    func2()
end
 
return module

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值