Lua学习

文章介绍了Lua编程语言中的表操作,包括初始化、赋值和移除引用。此外,详细阐述了模块的创建与使用,以及元表的概念,如__index和__newindex元方法。还提到了表的操作符和特殊方法,如__call和__tostring,用于自定义表的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

table(表):

--初始化表
mytable={}
--指定值
mytable[1]="Lua"
--移除引用
mytable=nil

模块与包——相当于类 :

模块:变量、函数等组成。

--定义名为 module 的模块
module={}

--定义常量
module.constant="这是一个变量"

--定义函数
function module.func1()
    io.write("这是一个私有函数!")
end

local function.func2()
    print("这是一个私有函数!")
end

function module.func3()
    func2()
end

return module

加载模块

require("<模块名>") 或 require "<模块名>"

require("module")
print(module.constant)
module.func3()
local m=require("module")
print(m.constant)
m.func3()

Metatable(元表)

setmetatable()

mytable={}                             --普通表
mymetatable={}                         --元表
setmetatable(mytable,mymetatable)      --把mymetatable设为mytable的元素
mytable=setmetatable({},{})

__index元方法

Lua在查找一个表元素时,如下三个步骤

1、在表中查找,如果找到,返回该元素,找不到则继续。

2、判断该表是否有元表,如果没有元表,返回nil,有则继续。

3、判断元表有没有_index方法,如果_index方法为nil,则返回nil;如果_index方法是一个表,则重复1、2、3;如果_index方法是一个函数,则返回该函数的返回值。

__newindex元方法

mymetatable = {}
mytable = setmetatable({key1 = "value1"}, { __newindex = mymetatable })

print(mytable.key1)

mytable.newkey = "新值2"
print(mytable.newkey,mymetatable.newkey)

mytable.key1 = "新值1"
print(mytable.key1,mymetatable.key1)

结果:

value1
nil    新值2
新值1    nil

_newindex元方法用来对表更新,_index用来对表访问。

在对新索引键赋值时,会调用元方法,而不进行赋值。

如果对已存在的索引键盘赋值,则会直接进行赋值,而不调用元方法_newindex

表的操作符

__add:"+"

__sub:"-"

__mul:"*"

__div:"/"

__mod:'%'

__eq:'=='

__lt:'<'

__le:'<='

__call 元方法

__call 元方法在 Lua 调用一个值时调用。以下实例演示了计算表中元素的和

__tostring 元方法

__tostring 元方法用于修改表的输出行为,自定义了表的输出内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值