切中要害;我已经做了一段时间的Lua,但从来没有完全了解细节,所以我已经在谷歌上搜索了几个小时,还没有想出一个明确的答案。
与Lua中的OOP相关,使用的术语包括:
- 对象
- 类
- 功能
- 方法
- 桌子
问题是,什么时候正确使用这些?如下面的例子:
addon = { }
function addon:test_func( )
return 'hi'
end
问:根据我对Lua和OOP的理解,addon
是一个表格,但是,我读到它也可以是一个对象 - 但是当它在技术上是一个对象时?在该表中创建函数后?
问:test_func
是一个函数,但是,我读到当它放在表(类)中时,它变成了一个"方法"。
问:整行addon:test_func( )
,我知道冒号是一个运算符,但是整行文本集的术语是什么?类本身?
最后,对于此示例代码:
function addon:test_func( id, name )
end
问:什么是 id和name,因为我看到有些人将它们识别为参数,但随后其他区域将它们归类为参数,所以我坚持使用参数。
因此,简而言之,这些术语中的每个的正确术语是什么,它们何时成为现在的样子?
谢谢
根据我对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和name,因为我看到有些人将它们识别为参数,但是其他区域将它们归类为参数,所以我坚持使用参数。
它们是参数。参数是在函数签名中声明的名称。参数是传递给函数的值。