Lua 与 OOP 相关的术语

  • 本文关键字:术语 OOP Lua lua
  • 更新时间 :
  • 英文 :


切中要害;我已经做了一段时间的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

问:什么是 idname,因为我看到有些人将它们识别为参数,但随后其他区域将它们归类为参数,所以我坚持使用参数。

因此,简而言之,这些术语中的每个的正确术语是什么,它们何时成为现在的样子?

谢谢

根据我对Lua和OOP的理解,addon是一个表格,但是,我读到它也可以是一个对象 - 但是当它在技术上是一个对象时?在该表中创建函数后?

对象不是一个定义明确的术语。我已经看到它被定义为(在 C 中)任何值。在Lua中,我认为它是表格的同义词。您还可以将其定义为类的实例。

test_func是一个函数,但是,我读到当它放在表(类)中时,它变成了一个"方法"。

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

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

该特定代码段没有名称。它只是方法定义的一部分。

另外,我不会称冒号为运算符。运算符将是x + y中的加分项,其中xy本身都意味着某些东西。在addon:test_func()中,test_func只在表addon内有意义,并且只有在调用或定义方法时使用冒号才有效。冒号实际上是句法糖的一种形式,其中真正的运算符是索引运算符:[]。假设您正在调用该方法,则扩展将为:addon['test_func'](addon)

什么是id和name,因为我看到有些人将它们识别为参数,但是其他区域将它们归类为参数,所以我坚持使用参数。

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

最新更新