lok*_*oki 10 delphi alias function
在Delphi中有一种方法可以将过程声明为另一个过程的别名吗?就像是:
function AnAliasToUpperCase(const S: AnsiString): AnsiString = system.AnsiStrings.UpperCase;
Run Code Online (Sandbox Code Playgroud)
然后在程序中调用AnAliasToUpperCase或UpperCase必须完全相同.
Vic*_*ria 31
定义它,例如像一个恒定的声明:
const
AliasToUpperCase: function(const S: AnsiString): AnsiString = System.AnsiStrings.UpperCase;
Run Code Online (Sandbox Code Playgroud)
可能适合您的需求.
对"如何为函数/过程建立别名"这一问题的正确答案是"你不能".
但有两种解决方法可以模拟这种情况,这两种方法都可能会引入一些开销 - 第一种是另一种答案所示的const.
除了将其声明为const之外,您还可以将其声明为新的内联例程:
function AliasToUpperCase(const S: AnsiString): AnsiString; inline;
begin
Result := System.AnsiStrings.UpperCase(S);
end;
Run Code Online (Sandbox Code Playgroud)
但是,您依赖于内联的编译器设置,并且还需要将该AnsiStrings单元添加到您呼叫的任何位置,AliasToUpperCase否则您将收到H2443 Inline function has not been expanded because unit is not specified in USES list警告.
对于此函数签名,它可以工作,但对于其他返回类型,您可能会遇到缺少返回值优化并具有额外值副本.