gpt4 book ai didi

delphi - 为什么要创建一个只有 1 个静态函数的类?

转载 作者:行者123 更新时间:2023-12-03 14:58:48 25 4
gpt4 key购买 nike

最近我遇到了以下代码:

interface

TSomeClass=Class
public
class function SomeFunction(sMyString: string) : ISomeInterface;
end;

implementation

TSomeClass.SomeFunction(sMyString: string) : ISomeInterface;
begin
...Get some dependency.
end;

基本上是一个包含 1 个类函数的类。

与仅将函数放在一个单元中而不将其作为类的一部分相比,此构造有什么好处?

喜欢:

interface
function SomeFunction(sMyString: string) : ISomeInterface;

implementation

SomeFunction(sMyString: string) : ISomeInterface;
begin
...Get some dependency.
end;

最佳答案

这很大程度上取决于个人选择。

但是,类函数提供的一个好处是一种伪造 namespace 的方法。假设您要使用的函数名称非常短且通用。在这种情况下,它可能会与在不同单元中定义的具有相同名称的另一个符号发生冲突。此时,您可能会受到单位使用顺序的变幻莫测的影响,并且可能需要完全限定名称。通过使用类函数,您可以强制用户使用其类来限定函数名称。

这里要指出的另一点是,您提供的两种替代方案具有潜在的显着差异。您问题中的类函数有一个 Self 指针。与实例方法不同,this 指的是类而不是实例。要使这两个函数完全等效,您可以将类函数声明为static

class function SomeFunction(sMyString: string): ISomeInterface; static;

当然,使用非静态类函数可以完成的一件事是,它可以用在需要 of object 方法类型的地方。

关于delphi - 为什么要创建一个只有 1 个静态函数的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24777711/

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