2010-11-17 2 views
1

Прежде чем реализовать его вручную (просто, я знаю), мне интересно, поддерживает ли ActionScript или Flex поддержку диапазонов?Диапазоны ActionScript?

  • Вы можете сделать это в Ruby: 1..101
  • Вы можете сделать это в .NET: Enumerable.Range(1, 10)

    Вы можете это сделать в AS3 или Flex? Я просто не хочу изобретать колесо.

ответ

3

Существует нет, но если вы хотите, вы можете сделать что-то вроде этого, чтобы эмулировать синтаксис:

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); 
    } 
+3

Ключевое слово 'get' не может использоваться как имя функции, так как это способ определения функции getter. –

+2

Да, реализовать это легко ... Я просто хотел знать, есть ли в рамках или на языке все ... чтобы избежать избыточного кода. –

+1

@Mark Knol. Я не понимал этого, и хотя я согласен, что это хорошая идея, избегая этого, вы на самом деле ошибаетесь. Вышеприведенный код компилируется и запускается без ошибок. –

0

Я не верю, что они были для заполнения массива. Я проверил классы Array, ArrayUtil и ArrayCollection.

Я знаю, что TextInput класс имеет свойство restrict, что вы можете указать диапазон как 0-9 или a-Z.

Также я нашел это для установки диапазона charater: Setting Character Range

Но чтобы заполнить массив, я думаю, вы можете просто построить это метод самостоятельно.

+0

Но свойство 'ограничение'' TextInput' является регулярным выражением, а не диапазоном. –

0

вы можете использовать фильтр массива() метод заполнения нового массива из заданного диапазона объектов из основного массива.

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 

с помощью фильтра() метода можно реально создать массив с несколькими диапазонами (EX: 1-4 и 8-12) от основного массива, в дополнении к любому другому типу фильтрации вы хотите , такие как совпадения строк для поиска.

Смежные вопросы