计算机语言中的元表及元方法是什么呢?

作者&投稿:代泊 (若有异议请与网页底部的电邮联系)
计算中常说的元表是什么?~

元表就是一个lua表,程序开发中有元表,那个值都可以有一个元表。1.Lua 中的每个值都可以有一个 元表。 这个 元表 就是一个普通的 Lua 表, 它用于定义原始值在特定操作下的行为。 如果你想改变一个值在特定操作下的行为,你可以在它的元表中设置对应域。 例如,当你对非数字制作加操作时, Lua 会检查该值的元表中的 "__add" 域下的函数。 如果能找到,Lua 则调用这个函数来完成加这个操作。2.元表中的键对应着不同的 事件 名; 键关联的那些值被称为 元方法。 在上面那个例子中引用的事件为 "add" , 完成加操作的那个函数就是元方法。你可以用 getmetatable 函数 来获取任何值的元表。3.使用 setmetatable 来替换一张表的元表。在 Lua 中,你不可以改变表以外其它类型的值的元表 ; 若想改变这些非表类型的值的元表,请使用 C API。表和完全用户数据有独立的元表 (当然,多个表和用户数据可以共享同一个元表)。 其它类型的值按类型共享元表; 也就是说所有的数字都共享同一个元表, 所有的字符串共享另一个元表等等。 默认情况下,值是没有元表的, 但字符串库在初始化的时候为字符串类型设置了元表 ()。4.元表决定了一个对象在数学运算、位运算、比较、连接、 取长度、调用、索引时的行为。 元表还可以定义一个函数,当表对象或用户数据对象在垃圾回收 ()时调用它。5.接下来会给出一张元表可以控制的事件的完整列表。 每个操作都用对应的事件名来区分。 每个事件的键名用加有 '__' 前缀的字符串来表示; 例如 "add" 操作的键名为字符串 "__add"。 注意、Lua 从元表中直接获取元方法; 访问元表中的元方法永远不会触发另一次元方法。 下面的代码模拟了 Lua 从一个对象 obj 中获取一个元方法的过程:6.对于一元操作符(取负、求长度、位反), 元方法调用的时候,第二个参数是个哑元,其值等于第一个参数。 这样处理仅仅是为了简化 Lua 的内部实现 (这样处理可以让所有的操作都和二元操作一致), 这个行为有可能在将来的
7.元表中的键对应着不同的 事件 名; 键关联的那些值被称为 元方法。 在上面那个例子中引用的事件为 "add" , 完成加操作的那个函数就是元方法。你可以用 getmetatable 函数 来获取任何值的元表。8.使用 setmetatable 来替换一张表的元表。在 Lua 中,你不可以改变表以外其它类型的值的元表 ; 若想改变这些非表类型的值的元表,请使用 C API。表和完全用户数据有独立的元表 (当然,多个表和用户数据可以共享同一个元表)。 其它类型的值按类型共享元表; 也就是说所有的数字都共享同一个元表, 所有的字符串共享另一个元表等等。 默认情况下,值是没有元表的, 但字符串库在初始化的时候为字符串类型设置了元表 ()。

程序开发中有元表,那个值都可以有一个元表,元表就是一个lua表。
Lua 中的每个值都可以有一个 元表。 这个 元表 就是一个普通的 Lua 表, 它用于定义原始值在特定操作下的行为。 如果你想改变一个值在特定操作下的行为,你可以在它的元表中设置对应域。 例如,当你对非数字值做加操作时, Lua 会检查该值的元表中的 "__add" 域下的函数。 如果能找到,Lua 则调用这个函数来完成加这个操作。
元表中的键对应着不同的 事件 名; 键关联的那些值被称为 元方法。 在上面那个例子中引用的事件为 "add" , 完成加操作的那个函数就是元方法。
你可以用 getmetatable 函数 来获取任何值的元表。
使用 setmetatable 来替换一张表的元表。在 Lua 中,你不可以改变表以外其它类型的值的元表 ; 若想改变这些非表类型的值的元表,请使用 C API。
表和完全用户数据有独立的元表 (当然,多个表和用户数据可以共享同一个元表)。 其它类型的值按类型共享元表; 也就是说所有的数字都共享同一个元表, 所有的字符串共享另一个元表等等。 默认情况下,值是没有元表的, 但字符串库在初始化的时候为字符串类型设置了元表 ()。
元表决定了一个对象在数学运算、位运算、比较、连接、 取长度、调用、索引时的行为。 元表还可以定义一个函数,当表对象或用户数据对象在垃圾回收 ()时调用它。
接下来会给出一张元表可以控制的事件的完整列表。 每个操作都用对应的事件名来区分。 每个事件的键名用加有 '__' 前缀的字符串来表示; 例如 "add" 操作的键名为字符串 "__add"。 注意、Lua 从元表中直接获取元方法; 访问元表中的元方法永远不会触发另一次元方法。 下面的代码模拟了 Lua 从一个对象 obj 中获取一个元方法的过程:
对于一元操作符(取负、求长度、位反), 元方法调用的时候,第二个参数是个哑元,其值等于第一个参数。 这样处理仅仅是为了简化 Lua 的内部实现 (这样处理可以让所有的操作都和二元操作一致), 这个行为有可能在将来的

元表及元方法,Lua 中的每个值都可以有一个 元表。 

1.这个 元表 就是一个普通的 Lua 表, 它用于定义原始值在特定操作下的行为。 如果你想改变一个值在特定操作下的行为,你可以在它的元表中设置对应域。 例如,当你对非数字制作加操作时, Lua 会检查该值的元表中的 "__add" 域下的函数。 如果能找到,Lua 则调用这个函数来完成加这个操作。
2.元表中的键对应着不同的 事件 名; 键关联的那些值被称为 元方法。 在上面那个例子中引用的事件为 "add" , 完成加操作的那个函数就是元方法。
你可以用 getmetatable 函数 来获取任何值的元表。
3.使用 setmetatable 来替换一张表的元表。在 Lua 中,你不可以改变表以外其它类型的值的元表 (除非你使用调试库(参见§6.10)); 若想改变这些非表类型的值的元表,请使用 C API。
4.表和完全用户数据有独立的元表 (当然,多个表和用户数据可以共享同一个元表)。 其它类型的值按类型共享元表; 也就是说所有的数字都共享同一个元表, 所有的字符串共享另一个元表等等。 默认情况下,值是没有元表的, 但字符串库在初始化的时候为字符串类型设置了元表 (参见 §6.4)。
5.元表决定了一个对象在数学运算、位运算、比较、连接、 取长度、调用、索引时的行为。 元表还可以定义一个函数,当表对象或用户数据对象在垃圾回收 (参见§2.5)时调用它。
接下来会给出一张元表可以控制的事件的完整列表。 每个操作都用对应的事件名来区分。 每个事件的键名用加有 '__' 前缀的字符串来表示; 例如 "add" 操作的键名为字符串 "__add"。 注意、Lua 从元表中直接获取元方法; 访问元表中的元方法永远不会触发另一次元方法。 下面的代码模拟了 Lua 从一个对象 obj 中获取一个元方法的过程:
rawget(getmetatable(obj) or {}, "__" .. event_name)
6.对于一元操作符(取负、求长度、位反), 元方法调用的时候,第二个参数是个哑元,其值等于第一个参数。 这样处理仅仅是为了简化 Lua 的内部实现 (这样处理可以让所有的操作都和二元操作一致), 这个行为有可能在将来的版本中移除。 (使用这个额外参数的行为都是不确定的。)
"add": + 操作。 如果任何不是数字的值(包括不能转换为数字的字符串)做加法, Lua 就会尝试调用元方法。 首先、Lua 检查第一个操作数(即使它是合法的), 如果这个操作数没有为 "__add" 事件定义元方法, Lua 就会接着检查第二个操作数。 一旦 Lua 找到了元方法, 它将把两个操作数作为参数传入元方法, 元方法的结果(调整为单个值)作为这个操作的结果。 如果找不到元方法,将抛出一个错误。
"sub": - 操作。 行为和 "add" 操作类似。
"mul": * 操作。 行为和 "add" 操作类似。
"div": / 操作。 行为和 "add" 操作类似。
"mod": % 操作。 行为和 "add" 操作类似。
"pow": ^ (次方)操作。 行为和 "add" 操作类似。
"unm": - (取负)操作。 行为和 "add" 操作类似。
"idiv": // (向下取整除法)操作。 行为和 "add" 操作类似




计算机语言中的元表及元方法是什么呢?
1.这个 元表 就是一个普通的 Lua 表, 它用于定义原始值在特定操作下的行为。 如果你想改变一个值在特定操作下的行为,你可以在它的元表中设置对应域。 例如,当你对非数字制作加操作时, Lua 会检查该值的元表中的 "__add" 域下的函数。 如果能找到,Lua 则调用这个函数来完成加这个操作。

计算中什么是元表的参数?
元表参数不同版本有小不同,下面是最新版本详解:1."add": + 操作。 如果任何不是数字的值(包括不能转换为数字的字符串)做加法, Lua 就会尝试调用元方法。 首先、Lua 检查第一个操作数(即使它是合法的), 如果这个操作数没有为 "__add" 事件定义元方法, Lua 就会接着检查第二个操作数。

lua 元表和元方法
lua创建新表时不创建元表。在lua语言中,只能为表设置元表,若设要为其它类型的值设置元表,则必须通过c代码或调试库完成。一个表可以成为任意值的元表;一组相关的表也可以共享一个描述了它们共同行为的通用元表;一个表可以成为它自己的元表,用于描述自身特有的行为。算术运算相关的元方法库定义相...

Lua学习笔记(5)--迭代器和泛型for、元表和元方法、面向对象编程_百度...
在Lua的学习过程中,我们重点关注了语言的几个重要特性:迭代器和泛型for,元表和元方法,以及面向对象编程的概念。首先,迭代器是一种关键结构,它通过函数形式实现,每次调用返回集合中的下一个元素,利用闭包保存迭代状态。泛型for则简化了迭代循环,自动保存迭代函数和状态,并在遇到nil时结束循环。元表...

列表长什么样(列表的长度怎么计算)
列表大体呈长方形,某些元素周期中留有空格,使特性相近的元素归在同一族中,如碱金属元素、碱土金属、卤族元素、稀有气体等。 1、元素周期表有7个周期,16个族。每一个横行叫作一个周期,每一个纵行叫作一个族。这7个周期又可分成短周期(1、2、3)、长周期(4、5、6、7)。共有16个族,从左到右每个纵列算...

如何用LISP语言提取CAD中文本或直线的倾斜角度?
1.0))10和11项是直线的两个端点(10 0.919113 2.15962 0.0) (11 4.32096 6.14953 0.0) ,要经过计算才会得出直线的角度 倾斜文字的图元表 ((-1 . <图元名: 7ffffb05e40>) (0 . "TEXT") (330 . <图元名: 7ffffb03990>) (5 ."DF4") (100 . "AcDbEntity") (67 . 0) (...

什么叫元数据
元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。 问题三:什么是元数据 元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据。 [编辑]元数据的特点[1] ①元数据是关于数据的结构化的数据,它不一定是数字形式的,可...

数据结构在计算机内存中的表示是指什么?
顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。2、链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。

数据元素之间的关系在计算机中有几种表示方法
2、数据元素及其关系在计算机存储内的表示,称为数据的存储结构(Storage Strucure);数据的存储结构是逻辑结构用计算机语言的实现(亦称为映象),它依赖于计算机语言。对机器语言而言,存储结构是具体的。。一般,只在高级语言的层次上讨论存储结构。3、数的运算,即对数据施加的操作。数据的运算定义在数据...

汇编语言(面向机器的程式设计语言)详细资料大全
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可程式器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或运算元的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令...

宁洱哈尼族彝族自治县17196502838: C语言中的元码和浮码指的是什么? -
正志噻吗: 首先将数据转化成二进制的,正数的源码就是这个二进制数,正数的补码也是这个二进制数;负数的源码也是先将数据转化成二进制数,只是在最前面的位上将0换成1,表示这是负数,补码就是在上面的基础上按位取反(取反时表示负数的1不算)再加1;以8位为例 例如:10=0000 1010(源码补码一样 都是0000 1010 ) -10=源码:1000 1010 补码:1111 0110

宁洱哈尼族彝族自治县17196502838: 计算机语言中二进制,八进制,十进制,十六进制之间具体的关系是怎样的? -
正志噻吗: 二进制,八进制,十进制,十六进制二进制是计算机内部所有数据的存储方式. 八进制,十进制,十六进制 是人能识别的数据格式. 一般来说,通常的二进制,八进制,十进制,十六进制.是指存储在字符串里的二进制,八进制,十进制,...

宁洱哈尼族彝族自治县17196502838: 计算机编码 -
正志噻吗: 底层编码是二进制的,二进制的编码太长,不利于表示,所以简写为十六进制,例如 “我”的编码是 “CED2”,“爱”的编码是“B0AE”,你不需要懂. 你的输入输出都是经过程序转换的,所以你不需要直接使用二进制进行输入与输出,在50年代,确实是用二进制直接输入的. 现在编码都用的是高级语言,由编译器和连接器生成二进制文件,以不需要人的参与了

宁洱哈尼族彝族自治县17196502838: C语言中\0、'\0'、'0'、0分别是什么? -
正志噻吗: 1、'\0'是字符串结束标志位 对应ascii 码:00; 2、'0'是字符0 对应ascii 码:30;3、0是数字0 对应ascii 码:00.C语言: C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器...

宁洱哈尼族彝族自治县17196502838: 什么是计算机语言? -
正志噻吗: 计算机语言(Computer Language)指用于人与计算机之间通讯的语言.计算机语言是人与计算机之间传递信息的媒介.计算机系统最大特征是指令通过一种语言传达给机器.为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序...

宁洱哈尼族彝族自治县17196502838: 什么是程序设计语言? -
正志噻吗: 程序设计语言是用于书写计算机程序的语言. 语言的基础是一组记号和一组规则.根据规则由记号构成的记号串的总体就是语言.在程序设计语言中,这些记号串就是程序. 程序设计语言有3个方面的因素,即语法、语义和语用.语法表示程序...

宁洱哈尼族彝族自治县17196502838: 计算机c语言中什么是链表
正志噻吗: 简单来说就是“承上启下”,区别于正常数组,存储的时候不是一连串连续的内存地址. 链表的特点在于结点,struct stu{ int num; int score; struct stu *next; } 这就是一个简单的链表, 上边两个是数据域,最后一个是指针域 指针域交代了下一个数据是存在哪里的, 这样计算机就可以直接去找到了. 这样便于插入和删除,缺点就是同等的空间下,链表存的数据少,因为他多了指针域.

宁洱哈尼族彝族自治县17196502838: 你知道常用的计算机语言有哪些?计算机语言的作用是什么?算法、数据结构和程序有什么关系? -
正志噻吗: 常用的计算机语言:basic pascal c c++ fortran java等.注意,ASP JSP php等不应算作语言. 程序=算法+数据结构

宁洱哈尼族彝族自治县17196502838: 最新的计算机编程语言是什么? -
正志噻吗: 目录 [显示隐藏] 1 特点 1.1 数据和数据结构 1.2 指令及流程控制 1.3 引用机制和重用 2 程序设计语言的历史 3 常见的程序设计语言 [编辑]特点 每一种程序设计语言可以被看作是一套包含语法、词汇和含义的正式规范. 这些规范通常包括: 数据和...

宁洱哈尼族彝族自治县17196502838: 编程中的枚举是什么意思? -
正志噻吗: 枚举:值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称.枚举类型有名称、基础类型和一组字段.基础类型必须是一个内置的有符号(或无符号)整数类型(如...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网