举例说明Lua中元表和元方法的使用 - 网站

举例说明Lua中元表和元方法的使用

分类:Lua · 发布时间:2021-11-21 04:50 · 阅读:4774

这篇文章主要介绍了举例说明Lua中元表和元方法的使用,文中--两个横线开始单行的注释,--[[加上两个[和]表示多行的注释--]],需要的朋友可以参考下

table的元表提供了一种机制,可以重定义table的一些操作。
之后我们会看到元表是如何支持类似js的prototype行为。

复制代码 代码如下:
f1 = {a = 1, b = 2}  -- 表示一个分数 a/b.
f2 = {a = 2, b = 3}

复制代码 代码如下:
-- 这个是错误的:
-- s = f1 + f2

metafraction = {}
function metafraction.__add(f1, f2)
  sum = {}
  sum.b = f1.b * f2.b
  sum.a = f1.a * f2.b + f2.a * f1.b
  return sum
end

setmetatable(f1, metafraction)
setmetatable(f2, metafraction)

s = f1 + f2  -- 调用在f1的元表上的__add(f1, f2) 方法

-- f1, f2 没有能访问它们元表的key,这与prototype不一样,
-- 所以你必须用getmetatable(f1)去获得元表。元表是一个普通的table,
-- Lua可以通过通常的方式去访问它的key,例如__add。

标签:
Lua 元表 元方法

相关文章

Golang使用ChatGPT生成单元测试实践

这篇文章主要为大家介绍了Golang使用ChatGPT生成单元测试实践详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Lua中的模块(module)和包(package)详解

这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数、写一个模块、package.loaded、module函数等内容,需要的朋友可以参考下

Lua 中 pairs 和 ipairs 的区别

这篇文章主要介绍了Lua 中 pairs 和 ipairs 的区别,本文用官方文档和代码实例总结了它的们的区别,需要的朋友可以参考下

Lua实现split函数

这篇文章主要介绍了Lua实现split函数,lua中没有split分割字条串函数,本文使用自定义函数实现,需要的朋友可以参考下

Lua教程(一):简介、优势和应用场景介绍

这篇文章主要介绍了Lua教程(一):简介、优势和应用场景介绍,本文是Lua教程系列文章的第一篇,需要的朋友可以参考下

返回分类 返回首页