繁体   English   中英

如何创建函数/过程的别名?

[英]How to make an alias of a function/procedure?

在Delphi中有一种方法可以将过程声明为另一个过程的别名吗? 就像是:

function AnAliasToUpperCase(const S: AnsiString): AnsiString = system.AnsiStrings.UpperCase;  

后来在程序中调用AnAliasToUpperCaseUpperCase必须完全相同。

定义它,例如像一个恒定的声明:

const
  AliasToUpperCase: function(const S: AnsiString): AnsiString = System.AnsiStrings.UpperCase;

可能适合您的需求。

对“如何为函数/过程建立别名”这一问题的正确答案是“你不能”。

但有两种解决方法可以模拟这种情况,这两种方法都可能会引入一些开销 - 第一种是另一种答案所示的const。

除了将其声明为const之外,您还可以将其声明为新的内联例程:

function AliasToUpperCase(const S: AnsiString): AnsiString; inline;
begin
  Result := System.AnsiStrings.UpperCase(S);
end;

但是,您依赖于内联的编译器设置,并且还需要将AnsiStrings单元添加到您调用AliasToUpperCase任何AliasToUpperCase否则您将H2443 Inline function has not been expanded because unit is not specified in USES list警告中H2443 Inline function has not been expanded because unit is not specified in USES list

对于此函数签名,它可以工作,但对于其他返回类型,您可能会遇到缺少返回值优化并具有额外值副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM