与OOP相关的Lua术语

问题描述 投票:1回答:1

要点到这一点;我已经做了一段时间的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
1个回答
1
投票

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

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

test_func是一个函数,但是,我已经读过,当它放在一个表(类)中时它变成了一个“方法”。

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

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

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

另外,我不会将冒号称为操作员。在x + y中,运营商将是加分,xy都是他们自己的意思。在addon:test_func()中,test_func只在表addon中有意义,并且只有在调用或定义方法时使用冒号才有效。冒号实际上是一种语法糖,其中真正的运算符是索引运算符:[]。假设您正在调用该方法,那么扩展将是:addon['test_func'](addon)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.