要切合实际;我已经做过Lua一段时间了,但是从来没有完全掌握具体的术语,所以我已经使用Google搜索了几个小时,还没有给出确切的答案。
与Lua中的OOP有关,使用的术语包括:
问题是,何时正确使用它们?例如下面的示例:
addon = { }
function addon:test_func( )
return 'hi'
end
问题:据我对Lua和OOP的理解,addon
是一个表,但是我已经读到它也可以是一个对象-但从技术上讲,它是一个对象一个东西?在该表中创建函数之后?
Q: test_func
是一个函数,但是,我读到当它放在表(类)中时它变成了“方法”。
问:,我知道整行addon:test_func( )
是冒号,但是整行文本集的术语是什么?上课本身?
最后,对于此示例代码:
function addon:test_func( id, name )
end
问:什么是 id 和 name ,因为我已经看到有些人将其识别为参数,但随后其他领域对其进行了分类作为参数,所以我坚持使用参数。
简而言之,每种语言的正确术语是什么?它们什么时候成为它们的原样?
谢谢
答案 0 :(得分:1)
据我对Lua和OOP的了解,
addon
是一个表,但是我读到它也可以是一个对象-但是从技术上讲它是对象吗?在该表中创建函数之后?
对象不是一个定义明确的术语。我已经看到它在C中定义为任何值。在Lua中,我认为它与表同义。您也可以将其定义为类的实例。
test_func
是一个函数,但是,我读到将它放在表(类)中时会变成“方法”。
您基本上是正确的。方法是要使用冒号表示的任何函数。元方法也是方法,因为像常规方法一样,它们定义表的行为。
整行
addon:test_func( )
,我知道冒号是一个运算符,但是整行文本的术语是什么?上课本身?
该特定代码没有名称。这只是方法定义的一部分。
此外,我不会将冒号称为运算符。运算符将是x + y
中的加号,其中x
和y
本身就意味着某些东西。在addon:test_func()
中,test_func
仅在表addon
中具有含义,并且仅在调用或定义方法时使用冒号有效。冒号实际上是一种语法糖,其中实际运算符是索引运算符:[]
。假设您正在调用方法,则扩展名为:addon['test_func'](addon)
。
ID和名称是什么,因为我看到有人将它们标识为参数,但是随后其他地区将它们归类为参数,所以我坚持使用参数。
它们是参数。参数是您在函数签名中声明的名称。参数是传递给函数的值。