Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的示例中如何实现luaoop?_Oop_Lua - Fatal编程技术网

在我的示例中如何实现luaoop?

在我的示例中如何实现luaoop?,oop,lua,Oop,Lua,我试图在Lua中创建一个类,其中包含关于这个类的追随者的信息,我还想让这个类了解他的追随者 但是我的代码失败了,我不知道为什么 错误是 lua:OOP.lua:90:尝试调用方法“getName”(一个nil值) car1是在car2之后。鉴于,后来;您正在尝试访问car1的leader,它当然返回nil。因此出现了错误 print( "Follower of "..car1:getName().." is "..car1:getFollower():getName() ) 问题在于您的测试代

我试图在Lua中创建一个类,其中包含关于这个类的追随者的信息,我还想让这个类了解他的追随者

但是我的代码失败了,我不知道为什么

错误是

lua:OOP.lua:90:尝试调用方法“getName”(一个nil值)

car1
car2
之后。鉴于,后来;您正在尝试访问
car1
的leader,它当然返回
nil
。因此出现了错误

print( "Follower of "..car1:getName().." is "..car1:getFollower():getName() )

问题在于您的测试代码中,从我所看到的:

print ("Leader of " .. car1:getName() .. " is " .. car1:getLeader():getName())
car1
未定义引线。(您执行了
car2:follow(car1)

一些建议:

  • 您需要在创建方法中定义字段表。这还不适用于你的代码,但你可以说你想做排。您可以执行类似于
    Vehicle.platoon={};坦克1.排[Tank2]=true
    ——这会将坦克2添加到车辆的排表中,并与每辆车辆共享。如果您在新方法中定义它:
    函数newVehicle(…)tbl.platon={}。。。结束
    ,则它对每辆车都是唯一的

  • 不要使用访问器(get*,set*)方法,除非您有充分的理由使用它们。它们增加了混乱,并且不利于性能。使用它们的一个很好的理由是,如果您正在访问访问器方法中的表,并且希望简化与该表的交互。(即
    Obj:addChild(Obj2)
    Obj:hasChild(Obj2)
    ),但它可能不再符合访问器的资格:)

  • 可以对未设置的字段使用虚拟对象。这将防止出现类似您的错误:

    local Dummy = newVehicle("None", "None")
    Vehicle.follower = Dummy
    Vehicle.leader = Dummy
    
在代码中,这将生成:

--------------
Mazda
Harley
-- setted leader! --
Leader of Mazda is None

这个错误分散了你的注意力,我以前也遇到过。也要非常小心
\u索引中的表,因为它们是引用:)
print ("Leader of " .. car1:getName() .. " is " .. car1:getLeader():getName())
local Dummy = newVehicle("None", "None")
Vehicle.follower = Dummy
Vehicle.leader = Dummy
--------------
Mazda
Harley
-- setted leader! --
Leader of Mazda is None