Lua初识之表的构造-六
来源:互联网 发布:淘宝与描述相符评分 编辑:程序博客网 时间:2024/05/01 02:06
Lua初识之表的构造
构造器是创建初始化表的表达式,表是Lua特有的功能强大的东西,最简单的构造函数是{}, 用来创建一个空表。
Lua 中没有单独给出 数组、哈希表、链表、类的概念,所有这些在Lua 中都是以 Table(表)的形式使用。
一、以数组形式使用表
定义表
初始化表local days = {}-- 两种获取数组长度方法local length = #daysprint(length) --> 0-- 获取数组长度length = table.getn(days)print(length) --> 0向数组中填充数据days = {"Sunday", "Monday", "Tuesday"}-- 获取数组长度方法local length = #daysprint(length) --> 3 (获取到的数组长度为 3)-- 遍历表, 从 1 开始 到 数组长度 #days (3)-- Lua 和其他语言不同的是,Lua 中下表是从 1 开始的for i = 1,#days do print(days[i]) -- end输出结果 SundayMondayTuesday
向数组中添加数据
向下标 4 和 5 中插入 数据days[4] = "Wednesday"days[5] = "Thursday"local length = #daysprint(length) --> 5 (获取到的数组长度为 5)print(days[4]) --> Wednesdayprint(days[5]) --> Thursday-- 使用 table 提供的 insert 方法插入数据,默认插入到最后一个(以后介绍)table.insert(days, "Friday")清空表的一个方法days = {} -- 表中所有数据清空
– 数组进阶实现 二维数组(矩阵)
local arr = {}for i = 1, 5 do arr[i] = {} -- 定义 table arr 的第 i 项为一个 table for j = 1, 5 do -- arr[i] 为 table , 向arr[i] 的第 j项添加数据 -- 作为 数组使用 table arr[i][j] = i * 10 + j endend-- 遍历数组for i = 1, 5 do for j = 1, 5 do print( arr[i][j]) endend
二、以哈希表使用 table
-- 定义 哈希表local hash = { ["a"] = 1, ["b"] = 2, c = 3}-- 以 键(key)获取 数据print("a".." "..hash["a"]) --> a 1print("b".." "..hash["b"]) --> b 2print("c".." "..hash["c"]) --> c 3-- 下面方法同样可以获取到数据print("a".." "..hash.a) --> a 1print("b".." "..hash.b) --> b 2print("c".." "..hash.c) --> c 3-- 添加数据hash["d"] = 5print(hash["d"]) --> 5print(hash.d) --> 5-- 获取 hash 长度local length = #hashprint(length) --> 0因为上面几个值是以 键值对的形式既哈希表的方法使用 table, 这样获取 table 的长度 为 0, hash[1]、hash[2]、、 获取为 nil-- 看下面local hash = { ["a"] = 1, ["b"] = 2, c = 3, 5, "AAA", 7}-- 获取 hash 长度local length = #hashprint(length) --> 3-- 上面添加 5, "AAA", 7 三项后 数组长度就为 3 了print(hash[1]) --> 5print(hash[2]) --> AAAprint(hash[3]) --> 7-- 清空 表 hash 数据hash = {}for i = 1, 5 do -- 将 i 转换为字符串作为 key local key = tostring(i) -- 向 hash 中添加 键值对 hash[key] = i * 10end-- 遍历 hashfor i = 1, 5 do -- 将 i 转换为字符串作为 key local key = tostring(i) -- 向 hash 中添加 键值对 print( hash[key]) --> 10, 20, 30, 40, 50end
三、以链表形式使用 table
-- 定义一个空链表local list = nili = 1while i < 10 do -- 每一项存入一个数值 i list = { next = list, value = i} i = i + 1end-- 遍历链表local listT = listwhile listT do print(listT.value) --> 9, 8, 7, 6, 5, 4, 3, 2, 1 listT = l.nextend----------------------------------local list = nili = 1while i < 10 do local a = { 1, 2, 3} -- 每一项存入一个数值 a list = { next = list, value = a} i = i + 1endlocal listT = listwhile listT do local a = l.value for i = 1, 3 do print(a[i]) end listT = l.nextend
0 0
- Lua初识之表的构造-六
- Lua初识之表的构造-六
- lua学习之表的构造
- Lua表的构造
- lua 函数初识(六)
- Lua初识之表和函数-十三
- Lua初识之全局变量
- 【走进Lua的世界之六】Lua调用C++函数
- lua的函数初识
- Lua初识之LuaStdio使用方法
- Lua初识之输入输出-三
- Lua初识之表达式-五
- Lua初识之赋值-七
- Lua初识之函数-十
- 【走进Lua的世界之一】初识Lua
- Lua程序设计笔记之六: C API的使用
- C构造Lua表
- Lua初识之值类型-四
- HTML5能为我们带来什么? 面试必备!
- 自动跳界面
- struts2 + ajax + json的结合使用,实例讲解
- JBOSS /invoker/JMXInvokerServlet 利用工具
- 【Codeforces Round 271 (Div 2)A】【水题】Keyboard 打字列偏移还原原始串
- Lua初识之表的构造-六
- android keystore文件转换格式为pk8和x509.pem
- python数据库操作
- Socket编程基础知识
- Mac 键盘快捷键
- Linux平台如何获取储存设备唯一标识符
- 解决:解压时客户端没有所需的特权的问题
- java线程中yield()和join()的区别
- VS2012 输入中文变"??"解决办法