Lua的table到底是什么?


-- ocos2d.x.version: cocos2d-x-3.15.1 
-- 语言: Lua
-- 编译: xcode
-- 工具: sublimeText


-- lua的table到底是什么,我们来看table的用法

-- table变成数组
local t = {};
t[0] = 10; -- 这里需要注意 table 的默认初始索引一般以 1 开始
t[1] = 10;
t[2] = 10;
print("test====")
for k,v in pairs(t) do
    print(k,v)
end
-- 打印
-- [LUA-print] 0   10
-- [LUA-print] 1   10
-- [LUA-print] 2   10
table.insert( t, 0, 8 )
for k,v in pairs(t) do
    print(k,v)
end
-- 打印
-- [LUA-print] 0   8 -- 数据指定位置被插入
-- [LUA-print] 1   10
-- [LUA-print] 2   10
-- [LUA-print] 3   10
-- 此外table还有常用的函数 concat 链接2个数组 , remove 删除元素, sort排序table等


-- table变成字典
local t2 = {a = "1",b = "2"};
print(t2.a)
print(t2.b)
-- 打印
-- [LUA-print] 1
-- [LUA-print] 2
t2["中国"] = "中国富强";
for k,v in pairs(t2) do
    print(k,v)
end
-- [LUA-print] b   2
-- [LUA-print] a   1
-- [LUA-print] 中国  中国富强 -- 这里key 还能支持中文 顶顶顶.

-- table变成一个模块
-- 首先我新建一个.lua文件 名字交 TestModule.lua 文件 -- 一会我给大家贴出来
local t3 = require "app.TestModule"
print(t3.constant);
print(t3.func1());
-- [LUA-print] 这是一个常量
-- [LUA-print] 这是一个公有函数!
-- 额看到没 这又变成了一个模块,这也许就是脚本语言的奥秘啊  兄弟们


-- table变成继承
-- 首先我们设置一个英雄类
local Hero = {attack = 10}
function Hero:New(o) -- 创建一个o表,并给o表设置元表
    o = o or {}
    setmetatable (o,self)
    self.__index = self
    return o
end

function Hero:AddAttack(_attack)
    self.attack = self.attack + _attack
end

function Hero:ShowAttack()
    print(self.attack)
end

--子类HeroOne继承Hero
local HeroOne = Hero:New({HP = 100}) --继承 ,并且在子类表里新建了个字段
print(HeroOne:ShowAttack())
-- [LUA-print] 10     --  这里我们从父类里面继承了 ShowAttack函数 继承了attack值

TestModule.lua(上面引用的模块哈)

-- 通常是加local的,加了local是局部变量,需要return一下。
-- 如果不加,则M默认注册到_G中,require后,即使不return也可以直接使用M。
local module = {}
 
-- 定义一个常量
module.constant = "这是一个常量"
 
-- 定义一个函数
function module.func1()
    print("这是一个公有函数!")
end
 
local function func2()
    print("这是一个私有函数!")
end
 
function module.func3()
    func2()
end
 
return module

最后给大家看看我的文件夹路径害怕你们引用的时候报错

总结:

上面的列子我们总结了,lua能变成数组,字典,模块,继承的使用,当然事实也不仅于此。官方释义是:table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。大嫂在这里用大白话给大家翻译一下就是table是一种数据结构,但是呢又是一种特殊数据结构,不同以往的数据结构具有一定性和局限性,table是多功能的数据结构,懂了啵!!!

手动码字,真心不易,如有不懂可以联系大嫂,当前有创业或者发财的一定要联系我噢,风里雨里大嫂一直等你,V:1154195328; QQ = V.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值