gpt4 book ai didi

pascal - 在类声明中定义方法体?

转载 作者:行者123 更新时间:2023-12-03 18:18:28 24 4
gpt4 key购买 nike

我试图在 Free Pascal 的类声明中定义类方法,但我无法在网上找到任何示例。目前我必须这样做:

unit Characters;

{$mode objfpc}{$H+}

// Public
interface
type
TCharacter = class(TOBject)
private
FHealth, FAttack, FDefence: Integer;
procedure SetHealth(newValue: Integer);
public
constructor Create(); virtual;
procedure SayShrek();
function GetHealth(): Integer;
published
property Health: Integer read GetHealth write SetHealth;
end;


// Private
implementation
constructor TCharacter.Create;
begin
WriteLn('Ogres have LAYERS!');
end;

procedure TCharacter.SayShrek;
begin
WriteLn('Shrek!');
end;

procedure TCharacter.SetHealth(newValue: Integer);
begin
FHealth:= FHealth + newValue;
end;

function TCharacter.GetHealth() : Integer;
begin
GetHealth:= FHealth;
end;

end.

有什么方法可以让它更干净一点吗?在别处定义所有内容看起来杂乱无章。

编辑:

为了澄清,我想按照以下方式做一些事情:

TMyClass = class(TObject)
public
procedure SayHi();
begin
WriteLn('Hello!');
end;
end;

而不是必须进一步定义它。这可能吗?

最佳答案

这在 Pascal 中是不可能的。它的语法不允许这样做。

Pascal 的基本设计是将单元分为接口(interface)(可以做什么?)和实现(事情是如何完成的?)。编译器在解析 implementation 部分之前读取所有 interface 部分。你可能从 C 语言中知道这一点。 implementation 可以描述为 *.c 文件,而 interface 相当于 C 中的 *.h 文件。

此外,此类代码会严重降低 interface 部分(例如类声明)的可读性。

您希望从中获得什么好处?

关于pascal - 在类声明中定义方法体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32108903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com