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