要点到这一点;我已经做了一段时间的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
是一个函数,但是,我已经读过,当它放在一个表(类)中时它变成了一个“方法”。
你基本上是对的。方法是任何用冒号表示法调用的函数。 Metamethods也是方法,因为,与常规方法一样,它们定义表的行为。
整行
addon:test_func( )
,我知道冒号是一个运算符,但是整行文本集的术语是什么?一个班级本身?
这段特殊代码没有名称。它只是方法定义的一部分。
另外,我不会将冒号称为操作员。在x + y
中,运营商将是加分,x
和y
都是他们自己的意思。在addon:test_func()
中,test_func
只在表addon
中有意义,并且只有在调用或定义方法时使用冒号才有效。冒号实际上是一种语法糖,其中真正的运算符是索引运算符:[]
。假设您正在调用该方法,那么扩展将是:addon['test_func'](addon)
。
什么是id和name,因为我看到有些人将它们识别为参数,但是其他区域将它们分类为参数,所以我坚持使用参数。
他们是参数。参数是您在函数签名中声明的名称。参数是您传递给函数的值。