2010-10-20 52 views
3

我一直使用對象作爲一種通用的關聯數組(地圖/字典)的方式,因爲AS3/Flex在這方面似乎非常有限。但我真的不喜歡它來自C++/Java/C#背景。有沒有更好的方法,我沒有遇到過一些標準的類......這在AS3中甚至被認爲是好的/壞的?對象是AS3中的首選關聯容器?

回答

5

是的,Actionscript使用Object作爲通用關聯容器,並被認爲是這樣做的標準方式。

還有一個Dictionary類可用,flash.utils.Dictionary

區別在於Dictionary可以使用任何值作爲關鍵字,包括對象,而Object使用字符串關鍵字。對於大多數用途,Object是首選,因爲它更快,涵蓋大部分用例。

你可以看到Object這裏的細節:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Object.htmlDictionary這裏:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html 這裏它們之間的差異:http://livedocs.adobe.com/flex/3/html/help.html?content=10_Lists_of_data_4.html

+0

Flex應用程序是否可以使用flash.utils? – 2010-10-21 11:16:46

+0

是的,我只是在Flex Builder 3中測試過它,它可用。我還添加了另一個鏈接,更詳細地描述它們之間的差異。 – 2010-10-21 14:33:33

2

恐怕沒有本地替代ObjectDictionary地圖和其他結構。至於標準,好吧,它取決於如何定義標準,但是如果您查找Java樣式集合,則可能需要檢查兩個已知庫。

贊一個:

http://sibirjak.com/blog/collections/as3commons-collections/

此外,你可以看看這個問題,有鏈接到幾個DS庫(包括上面的一個)。

Collections in Adobe Flex

使用對象我不會說是好是壞的做法。在一般情況下他們比任何Actionscript替代(因爲他們是本地的)更快,但功能較少。有時提供的功能足夠好。有時候,這有點枯燥,所以更多結構化的東西可以幫助你擺脫代碼中較低層次的細節,並專注於你的「領域邏輯」,可以這麼說。最後,所有這些庫都通過對象,字典和數組(或矢量)實現它們的數據結構。所以,如果本地對象適合您的需求,我會說和他們一起去。另一方面,如果你發現自己基本上重寫了一個特定的Set,也許使用這些庫中的一個將是一個明智的選擇。

+0

謝謝。我真的不想使用一些「隨機」庫,除非它是一個事實上的標準,就像Java中的Apache Commons一樣......我也可以自己工作。 – 2010-10-21 11:18:48

+0

嘿,約翰,我們對標準庫的AS很差。就你而言,AS3Commons集合是你能夠在網絡中獲得的最佳選擇。 – 2010-11-02 19:35:40