`这个关键字在delphi中是等价的
假设我们有这样一门课:`这个关键字在delphi中是等价的,delphi,pascal,function-calls,Delphi,Pascal,Function Calls,假设我们有这样一门课: unit Traitement; interface type TTraitement =class public function func1(param:String): String; function func2(param:String): String; end; implementation function TTraitement.func1(param:String): String; begin
unit Traitement;
interface
type
TTraitement =class
public
function func1(param:String): String;
function func2(param:String): String;
end;
implementation
function TTraitement.func1(param:String): String;
begin
//some code
end;
function TTraitement.func2(param:String): String;
begin
//some code
end;
end.
我想在
func2
的代码中调用func1
。我曾经是一名Java程序员,在这种情况下,我会使用关键字this
。Pascal是否对this
关键字具有等效项?如果没有,我如何实现这种调用呢?与Java的在Delphi中的这个等价的是。从:
自己
在方法的实现中,标识符自引用
在其中调用方法的对象。例如,下面是
在类单元中实现TCollection Add方法:
function TCollection.Add: TCollectionItem;
begin
Result := FItemClass.Create(Self);
end;
Add方法调用
FItemClass字段,它始终是TCollectionItem子体。
TCollectionItem.Create接受TCollection类型的单个参数,
因此Add将调用Add的TCollection实例对象传递给它。
以下代码对此进行了说明:
var MyCollection: TCollection;
...
MyCollection.Add // MyCollection is passed to the
// TCollectionItem.Create method
自我之所以有用,有很多原因。例如,一名成员
类类型中声明的标识符可能会在块中重新声明
类的方法之一。在这种情况下,您可以访问
原始成员标识符作为Self.identifier
但是请注意,问题中的示例代码不需要使用Self
。在该代码中,您可以从func2
调用func1
,忽略Self
上述文档节选中给出的示例确实为Self
的存在提供了适当的动机,与Delphi中Java的这个
的等价物是。从:
自己
在方法的实现中,标识符自引用
在其中调用方法的对象。例如,下面是
在类单元中实现TCollection Add方法:
function TCollection.Add: TCollectionItem;
begin
Result := FItemClass.Create(Self);
end;
Add方法调用
FItemClass字段,它始终是TCollectionItem子体。
TCollectionItem.Create接受TCollection类型的单个参数,
因此Add将调用Add的TCollection实例对象传递给它。
以下代码对此进行了说明:
var MyCollection: TCollection;
...
MyCollection.Add // MyCollection is passed to the
// TCollectionItem.Create method
自我之所以有用,有很多原因。例如,一名成员
类类型中声明的标识符可能会在块中重新声明
类的方法之一。在这种情况下,您可以访问
原始成员标识符作为Self.identifier
但是请注意,问题中的示例代码不需要使用Self
。在该代码中,您可以从func2
调用func1
,忽略Self
上述文档摘录中给出的示例确实为Self
FWIW的存在提供了适当的动机:您可以像func1(…)一样调用它
-无需使用Self
对其进行限定。请注意,Object Pascal中的Self
实际上不是一个关键字,而是一个隐式变量。FWIW:您可以像func1(…)那样调用它
-无需使用Self
对其进行限定。请注意,Object Pascal中的Self
实际上不是一个关键字,而是一个隐式变量。