Lua有关OOP的术语

时间:2019-03-04 23:33:22

标签: lua

要切合实际;我已经做过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 ,因为我已经看到有些人将其识别为参数,但随后其他领域对其进行了分类作为参数,所以我坚持使用参数。

简而言之,每种语言的正确术语是什么?它们什么时候成为它们的原样?

谢谢

1 个答案:

答案 0 :(得分:1)

  

据我对Lua和OOP的了解,addon是一个表,但是我读到它也可以是一个对象-但是从技术上讲它是对象吗?在该表中创建函数之后?

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

  

test_func是一个函数,但是,我读到将它放在表(类)中时会变成“方法”。

您基本上是正确的。方法是要使用冒号表示的任何函数。元方法也是方法,因为像常规方法一样,它们定义表的行为。

  

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

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

此外,我不会将冒号称为运算符。运算符将是x + y中的加号,其中xy本身就意味着某些东西。在addon:test_func()中,test_func仅在表addon中具有含义,并且仅在调用或定义方法时使用冒号有效。冒号实际上是一种语法糖,其中实际运算符是索引运算符:[]。假设您正在调用方法,则扩展名为:addon['test_func'](addon)

  

ID和名称是什么,因为我看到有人将它们标识为参数,但是随后其他地区将它们归类为参数,所以我坚持使用参数。

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