代码之家  ›  专栏  ›  技术社区  ›  James Hay

在flex中创建类型安全集合

  •  4
  • James Hay  · 技术社区  · 16 年前

    我试图在flex中创建一个集合类,该类仅限于容纳我正在使用的特定类型的数据(接口)。我选择了不扩展arraycollection类,因为它太通用了,不能真正提供我所需要的编译时安全性。在这个简单的形式中,我的集合包含一个数组,我管理如何添加和删除对象,等等。

    我真正想做的是为每个循环使用这些集合。它显然不像C所说的那样直截了当地实现IEnumerable和IEnumerator(或者仅仅使用泛型集合)。有没有一种方法可以在行动脚本中做到这一点,如果有,还有关于如何实现的信息吗?

    干杯

    2 回复  |  直到 14 年前
        1
  •  2
  •   jmreidy    16 年前

    您需要扩展Flash代理类。扩展代理允许您更改“get”和“set”的工作方式,以及“for..in”和“for..each”循环。你可以找到更多的细节 on the Livedocs.

    以下是您的问题示例:

    package
    {
        import flash.utils.Proxy;
        import flash.utils.flash_proxy;
    
        public class EnumerableColl extends Proxy
        {
            private var _coll:Array;
    
            public function EnumerableColl()
            {
                super();
                _coll = [ 'test1', 'test2', 'test3' ];
            }
    
            override flash_proxy function nextNameIndex( index:int ):int
            {
                if ( index >= _coll.length ) return 0;
                return index + 1;
            } 
    
    
            override flash_proxy function nextValue( index:int ):*
            {
                return _coll[ index - 1];
            }
    
        }
    }
    
        2
  •  2
  •   Community CDub    8 年前

    看一看 Vector<> .对于flex中的一个类型化集合(4个之后的集合),这几乎是最好的选择。但是,您需要实现自己的类,否则。一种方法,似乎是使用 Iterator Pattern .

    另外,看看 this 所以POST。