lua检测表中是否有某个值_Lua设计与实现--Table篇

本文详述Lua中的Table设计哲学、数据结构及重要操作,包括如何检测表中值、Table的数组和哈希表结构、元素新增、rehash过程以及迭代操作,展示了Table在Lua中的核心地位和灵活性。
摘要由CSDN通过智能技术生成

0a8e8c303549e46bb1911db1034ea14f.png

本篇文章是Lua设计与实现专栏的第四篇,主要结合了《Lua设计与实现》书中的第4章(表),以及lua5.3源码进行一些总结,由于原书中主要是基于lua5.1进行书写的,所以可能会有跟书中列举代码不一致的地方,不过大体上是保持一致的。

Table的设计哲学

table应该算是lua最灵魂的一个结构了。它有以下特点:

  • 容器功能:与其他语言相似,lua也内置了容器功能,也就是table。而与其他语言不同的是,lua内置容器只有table。正因为如此,为了适配不同的应用需求,table的内部结构也比较考究,分为了数组和哈希表两个部分,根据不同需求来决定使用哪个部分。
  • 面向对象功能:与其他语言不同的时,lua并没有把面向对象的功能以语法的形式包装给开发者。而是保留了这样一种能力,待开发者去实现自己的面向对象。而这一保留的能力,也是封装在table里的:table里可以组合一个metatable,这个metatable本身也是一个table,它的字段用来描述原table的行为。

lua是一个短小精悍的语言,之所以把这么多功能全都聚合到table结构中,我的理解是,它不想让开发者去关心过多的类型,能够真正做到table在手,天下我有。同时,虽然table要兼具这么多的功能&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值