我将map(),reduce()和where(qlint:string)添加到了我的Spring4D分支。 当我编程这些函数时,我发现列表的行为有不同,当它们以不同的方式创建时。我为什么要使用TCollections.CreateList <T>而不是TList <T>。创建
如果我用TList<TSomeClass>.create
创建它们,枚举类型中的对象的类型为TSomeClass
。
如果我用TCollections.CreateList<TSomeClass>
创建它们,枚举类型中的对象的类型为TObject
。
所以,问题是:
是否有一个缺点用TList<TSomeClass>.create
?
或换句话说:我为什么要用TCollections.CreateList<TSomeClass>
?
BTW:与TCollections.CreateList我有一个TObjectList而不是从TList。所以它应该被称为TCollections.CreateObjectList ...但这是另一回事。
不符合。 'TCollections.CreateList'返回'IList '。当你枚举这些项目是“TSomeClass”类型的。换句话说,我质疑你在帖子中声称的所有内容。 –
至于直接使用'TList'的缺点,我认为如果你曾经参考一个它实现的接口,这将会变得很明显。在这一点上,生命周期管理将被接口引用接管,并且您可能会发现它从下面消失。因此,使用'CreateList '并且按住'IList '或'IEnumerable '而不是执行类。这个库的原理之一就是你不需要知道实现的细节。但是,我对Spring4d知之甚少,所以我可以在这里得到完全错误的结果...... –
这是很糟糕的解释。不同之处仅在于“可数”。我正在编写一些新的实习生函数给'TEnumerable'。在我的新函数中,RTTI调用的行为有所不同,因为我使用的是枚举类型的泛型类型(我知道从一开始就是错误的,但很容易从头开始)。对于刚上课的人来说,没有什么不同。 – Benedikt