Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与OOP相关的Lua术语_Lua - Fatal编程技术网

与OOP相关的Lua术语

与OOP相关的Lua术语,lua,Lua,切中要害;我做Lua有一段时间了,但从来没有把术语具体化,所以我在谷歌上搜索了几个小时,还没有找到一个明确的答案 与Lua中的OOP相关,使用的术语包括: 反对 阶级 作用 方法 桌子 问题是,什么时候正确使用这些工具?例如,在下面的示例中: addon = { } function addon:test_func( ) return 'hi' end Q:根据我对Lua和OOP的理解,addon是一个表,然而,我读到它也可以是一个对象——但从技术上讲它是一个对象吗?在该表中创建函

切中要害;我做Lua有一段时间了,但从来没有把术语具体化,所以我在谷歌上搜索了几个小时,还没有找到一个明确的答案

与Lua中的OOP相关,使用的术语包括:

  • 反对
  • 阶级
  • 作用
  • 方法
  • 桌子
问题是,什么时候正确使用这些工具?例如,在下面的示例中:

addon = { }
function addon:test_func( )
    return 'hi'
end
Q:根据我对Lua和OOP的理解,
addon
是一个表,然而,我读到它也可以是一个对象——但从技术上讲它是一个对象吗?在该表中创建函数之后

Q:
test\u func
是一个函数,但是,我读到,当它放在一个表(类)中时,它就变成了一个“方法”

Q:整行
插件:test_func()
,我知道冒号是一个运算符,但是整行文本的术语是什么?一个类本身

最后,对于此示例代码:

function addon:test_func( id, name )

end
Q:什么是idname,因为我看到一些人将它们识别为参数,但其他领域将它们分类为参数,所以我一直使用参数

简言之,这些词的正确术语是什么?它们什么时候会变成现在的样子

谢谢

从我对Lua和OOP的理解来看,
addon
是一个表,然而,我读到它也可以是一个对象——但是当它从技术上说是一个对象时?在该表中创建函数之后

对象不是一个定义良好的术语。我见过它(在C中)被定义为任何值。在Lua,我认为它是一张桌子的同义词。您还可以将其定义为类的实例

test\u func
是一个函数,但是,我读到,当它放在一个表(类)中时,它就变成了一个“方法”

你基本上是对的。方法是使用冒号表示法调用的任何函数。元方法也是方法,因为与常规方法一样,它们定义了表的行为

整行
插件:test_func()
,我知道冒号是一个运算符,但是整行文本集的术语是什么?一个类本身

这段代码没有名字。它只是方法定义的一部分

而且,我不会把冒号称为接线员。运算符将是
x+y
中的加号,其中
x
y
本身都有意义。在
addon:test_func()
中,
test_func
仅在表
addon
中有意义,并且仅在调用或定义方法时使用冒号有效。冒号实际上是一种语法糖,其中实数运算符是索引运算符:
[]
。假设您正在调用该方法,扩展将是:
addon['test\u func'](addon)

什么是id和name,因为我看到一些人将它们识别为参数,但其他领域将它们分类为参数,所以我一直使用参数


它们是参数。参数是您在函数签名中声明的名称。参数是传递给函数的值。

谢谢!所以“对象”可以对任何事物进行分类,而不一定局限于某一特定类型。如果使用addon.test\u func()和addon:test\u func(),术语是否会改变?我所知道的是,对于冒号,self作为第一个参数传递。因为Lua非常灵活,所以很难严格定义什么是方法。如果
test\u func
应该定义一个表的行为(即,您打算用冒号调用它),那么它就是一个方法。如果
addon
只不过是函数的存储空间,那么它不是一种方法。