当前位置: 首页 > 编程笔记 >

Lua 元表的创建和使用

李疏珂
2023-03-14
本文向大家介绍Lua 元表的创建和使用,包括了Lua 元表的创建和使用的使用技巧和注意事项,需要的朋友参考一下

示例

一个元表定义了一组改变lua对象行为的操作。一个元表只是一个普通的表,它以一种特殊的方式使用。

local meta = { } -- create a table for use as metatable

-- a metatable can change the behaviour of many things
-- here we modify the 'tostring' operation:
-- this fields should be a function with one argument.
-- it gets called with the respective object and should return a string
meta.__tostring = function (object)
    return string.format("{ %d, %d }", object.x, object.y)
end

-- create an object
local point = { x = 13, y = -2 }
-- set the metatable
setmetatable(point, meta)

-- since 'print' calls 'tostring', we can use it directly:
print(point) -- prints '{ 13, -2 }'
           

 类似资料:
  • 本文向大家介绍举例说明Lua中元表和元方法的使用,包括了举例说明Lua中元表和元方法的使用的使用技巧和注意事项,需要的朋友参考一下 table的元表提供了一种机制,可以重定义table的一些操作。 之后我们会看到元表是如何支持类似js的prototype行为。 如果在table中直接查找key失败,会使用元表的__index 继续查找,并且是递归的查找  __index的值也可以是函数functi

  • 主要内容:__index 元方法,实例,__newindex 元方法,实例,实例,为表添加操作符,实例,__call 元方法,实例,__tostring 元方法,实例在 Lua table 中我们可以访问对应的 key 来得到 value 值,但是却无法对两个 table 进行操作(比如相加)。 因此 Lua 提供了元表(Metatable),允许我们改变 table 的行为,每个行为关联了对应的元方法。 例如,使用元表我们可以定义 Lua 如何计算两个 table 的相加操作 a+b。 当 L

  • 在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。 因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。 例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。 当Lua试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否有一个叫"__add"的字段,若找到

  • 本文向大家介绍Lua 建立表格,包括了Lua 建立表格的使用技巧和注意事项,需要的朋友参考一下 示例 创建一个空表很简单: 您还可以创建一个简单数组形式的表: 请记住,默认情况下,表索引从1开始。 也可以创建带有关联元素的表: 上面的用法是下面的语法糖。在这种情况下,键的类型为字符串。添加了以上语法,以使表显示为记录。这种记录样式的语法与使用字符串键索引表的语法并行,如“基本用法”教程中所见。 如

  • 本文向大家介绍创建Lua虚拟机,包括了创建Lua虚拟机的使用技巧和注意事项,需要的朋友参考一下 示例 5.1 5.1            

  • 我正在编写一个脚本,该脚本的目的是:基于包含后缀日期时间的旧表设置表名(例如,table_1_2020_01_01),基于旧表的架构为该表创建架构,然后从旧表向该表插入数据。 我创建了三个MySQL语句,用于设置表名,创建表,然后将数据插入到创建的表中: 但是,每次我运行我的运行我的func从主,我收到这个错误: 我在golang中发现Set表名是一个var。所以我的解决方案是使用准备好的报表,并