最近我遇到了以下代码:
interface TSomeClass=Class public class function SomeFunction(sMyString: string) : ISomeInterface; end; implementation TSomeClass.someFunction(sMyString: string) : ISomeInterface; begin ...Get some dependency. end;
这个结构的好处是什么,而不仅仅是一个单元中的函数而不是它的一部分?
喜欢:
interface function SomeFunction(sMyString: string) : ISomeInterface; implementation SomeFunction(sMyString: string) : ISomeInterface; begin ...Get some dependency. end;
解决方法
这主要归结为个人选择.
但是,类函数提供的一个好处是伪造命名空间的方法.假设您要使用的函数名称非常简短且通用.在那种情况下,它可能会与另一个具有相同名称的符号发生碰撞,并在另一个单元中定义.此时您可能会受到单位使用订单变幻莫测的影响,并且可能需要完全限定名称.通过使用类函数,可以强制用户使用其类限定函数名称.
这里要说的另一点是,您提出的两种替代方案具有潜在的显着差异.你的问题中的类函数有一个自我指针.与实例方法不同,它指的是类而不是实例.要使这两个函数完全等效,您可以将类函数声明为静态.
class function SomeFunction(sMyString: string): ISomeInterface; static;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。