Delphi类变量

时间:2017-06-15 17:40:18

标签: oop delphi

我有以下代码:

// irrelevant code ...

type
  Zombie = class
  private
    ...
    Age : Integer;
    Alive : Boolean;
    TotalDeadZombies, TotalZombieAge : Double;
  public
    ...
    procedure ZombieGrow();
    procedure CheckIfDead();
    ...
    Function AvgLife() : Double;
  end;

procedure Zombie.ZombieGrow();
begin
  ...
  if (Alive = false) then
  begin
    TotalDeadZombies := TotalDeadZombies + 1;
    TotalZombieAge := TotalZombieAge + Age;
  end;
end;

procedure Zombie.CheckIfDead();
begin
  if Random(100) < 20 then
    Alive := False;
end;

function Zombie.AvgLife() : Double;
begin
  Result := TotalZombieAge / TotalDeadZombie;
end;

我遇到的问题是我想显示死僵尸的平均年龄。这可以通过以下方式完成:

Write('Average age '+Floattostr(Round(AvgLife)))

但是,这是在另一个类(此处未显示)中调用的,根据我对OOP的理解,它需要指定一个实例化对象,例如zombies[1].AvgLife如果它们存储在,例如,{{ {1}}数组(只是一个例子)。

是否有一种方法可以使变量Zombies[]TotalDeadZombies不与任何实例化的僵尸绑定,而是绑定到一个类变量,然后我可以以某种方式调用TotalZombieAge ?它只是简单地使它们成为全局变量吗?或者可以用另一种方式完成吗?

1 个答案:

答案 0 :(得分:8)

您只需要将变量声明为class var;然后它们属于,而不属于类的特定实例

type
  TZombie = class
  public
    class var TotalDeadZombies, TotalZombieAge: Double;
  end;

您可以像TZombie.TotalDeadZombies一样访问这些内容。同样,有类方法,类属性等。

查看the official documentation