我將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