【问题标题】:ActionScript Ranges?ActionScript 范围?
【发布时间】:2010-11-18 06:08:50
【问题描述】:

在我手动实现它之前(我知道很简单),我想知道 ActionScript 或 Flex 是否支持范围?

  • 你可以在 Ruby 中做到这一点:1..101

  • 您可以在 .Net 中进行操作:Enumerable.Range(1, 10)

    您可以在 AS3 或 Flex 中执行此操作吗?我只是不想重新发明轮子。

【问题讨论】:

    标签: apache-flex actionscript-3


    【解决方案1】:

    没有,但如果你愿意,你可以做这样的事情来模拟语法:

    public class Range {
        public static function get(min:int,max:int):Array {
            var ret:Array = [];
            while(min <= max) {
                ret.push(min++);
            }
            return ret;
        }
    }
    

    然后:

        for each(var i:int in Range.get(1,10)) {
            trace(i);
        }
    

    【讨论】:

    • 关键字'get'不能用作函数名,因为这是定义getter函数的方式。
    • 是的,实现起来很简单......我只是想知道它是在框架中还是在语言中......以避免冗余代码。
    • @Mark Knol。我没有意识到这一点,虽然我同意避免它是一个好主意,但你实际上错了。上面的代码编译运行没有错误。
    【解决方案2】:

    我不相信它们是用来填充数组的。我检查了ArrayArrayUtilArrayCollection 类。

    我知道TextInput 类有一个名为restrict 的属性,您可以指定一个范围,例如0-9a-Z

    我还发现这个用于设置字符范围:Setting Character Range

    但要填充一个数组,我认为您可能只需要自己构建一个方法。

    【讨论】:

    • 但是TextInputrestrict 属性是正则表达式而不是范围。
    【解决方案3】:

    您可以使用 Array 的 filter() 方法从原理数组中指定范围的对象填充新数组。

    package
    {
    import flash.display.Sprite;
    
    public class Test extends Sprite
        {
        private var minRangeIndex:uint;
        private var maxRangeIndex:uint;
    
        public function Test()
            {
            var myArray:Array = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I");
            minRangeIndex = 1;
            maxRangeIndex = 4;
    
            var rangeArray:Array = myArray.filter(rangeCallback);
    
            for each    (var element:Object in rangeArray)
                        trace(element);
            }
    
        private function rangeCallback(element:Object, index:int, array:Array):Boolean
            {
            return (index >= minRangeIndex && index <= maxRangeIndex);
            }
        }
    }
    
    //traces:  B, C, D, E
    

    使用 filter() 方法,除了任何其他类型的过滤之外,您实际上可以从主数组创建一个具有多个范围(例如:1-4 和 8-12)的数组想要的,比如用于搜索的字符串匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      相关资源
      最近更新 更多