【11月更文挑战第28天】

简介: 【11月更文挑战第28天】

Lua中的table是一种非常灵活的数据结构,它可以用来模拟数组、字典、集合等多种数据结构。table以键值对的形式存储数据,其中键可以是任何类型,但通常是数字或字符串。以下是table的一些基本用法和项目示例。

table的基本操作

创建和初始化table

-- 创建一个空的table
local myTable = {
   }

-- 直接初始化一个带有值的table
local myTable = {
   key1 = "value1", key2 = "value2"}

访问和赋值

-- 给table赋值
myTable["key3"] = "value3"

-- 访问table中的值
local value = myTable["key3"]
print(value)  -- 输出:value3

数组式的使用

-- 数组式的赋值
myTable[1] = "first element"
myTable[2] = "second element"

-- 数组式的访问
local firstElement = myTable[1]
print(firstElement)  -- 输出:first element

table的遍历

使用ipairs遍历数组

for index, value in ipairs(myTable) do
    print(index, value)
end

使用pairs遍历所有键值对

for key, value in pairs(myTable) do
    print(key, value)
end

完整项目示例

假设我们正在创建一个简单的通讯录应用,我们将使用table来存储联系人信息,并提供添加、查找和显示所有联系人的功能。

-- 创建一个空的table来存储联系人
local contacts = {
   }

-- 添加联系人函数
function addContact(name, phoneNumber)
    table.insert(contacts, {
   name = name, phone = phoneNumber})
end

-- 查找联系人函数
function findContact(name)
    for i, contact in ipairs(contacts) do
        if contact.name == name then
            return contact
        end
    end
    return nil
end

-- 显示所有联系人函数
function displayContacts()
    print("Contacts:")
    for i, contact in ipairs(contacts) do
        print(string.format("%d: %s - %s", i, contact.name, contact.phone))
    end
end

-- 添加一些联系人
addContact("Alice", "123-456-7890")
addContact("Bob", "987-654-3210")

-- 查找一个联系人
local contact = findContact("Alice")
if contact then
    print(string.format("Found contact: %s - %s", contact.name, contact.phone))
else
    print("Contact not found.")
end

-- 显示所有联系人
displayContacts()
目录
相关文章
|
7月前
|
存储 Linux Windows
【2月更文挑战第3天】C数据类型
在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。
43 0
|
6天前
【11月更文挑战第25天】
【11月更文挑战第25天】
19 0
|
2月前
|
消息中间件
【10月更文挑战第2天】确认机制(Acknowledgements)
【10月更文挑战第2天】确认机制(Acknowledgements)
|
2天前
【11月更文挑战第29天】
【11月更文挑战第29天】
10 4
|
3天前
|
索引
【11月更文挑战第27天】
【11月更文挑战第27天】
17 5
|
4天前
|
索引
【11月更文挑战第26天】
【11月更文挑战第26天】
12 2
|
2月前
|
监控 Java
【10月更文挑战第2天】Java线程池的使用
【10月更文挑战第2天】Java线程池的使用
|
2月前
|
机器学习/深度学习 机器人 Serverless
【10月更文挑战第1天】FaaS 的应用场景
【10月更文挑战第1天】FaaS 的应用场景
|
7月前
|
SQL 数据库 数据安全/隐私保护
BUUCTF[极客大挑战 2019]EasySQL1
BUUCTF[极客大挑战 2019]EasySQL1
|
7月前
|
PHP
[极客大挑战 2019]Havefun1
[极客大挑战 2019]Havefun1
下一篇
无影云桌面