Можно ли использовать тег метаданных [ArrayElementType] для параметра функции - PullRequest
1 голос
/ 23 июня 2010

Какую языковую конструкцию можно использовать для проверки времени компиляции типа элементов Array, когда Array является параметром функции?

Давайте использовать эту функцию в качестве примера:

[ArrayElementType("String")]
private function GetNumberArray(parameter:Array):Array {
   var myData:Array = [1.0, 2.0, 3.0];
   return myData;
}

Здесь мы пометили возвращенный массив как содержащий элементы типа string.Есть ли способ пометить переменную parameter как массив, содержащий элементы определенного типа?Я особенно заинтересован в коллекции Array.Мне известна коллекция векторов, но у меня есть причины не использовать ее в моем случае.

Ответы [ 3 ]

0 голосов
/ 23 июня 2010

Вы можете использовать Vector , хотя он имеет немного другой тип, чем массив:

private function GetNumberArray(parameter:Vector.<String>):Vector.<int> {
    var myData:Vector.<int> = Vector.<int>([1.0, 2.0, 3.0]);
    return myData;
}
0 голосов
/ 01 июля 2010

Кажется, нет способа применить атрибут к параметру.Если вы попытаетесь применить его, как показано ниже, вы получите ошибку компилятора.

[ArrayElementType("String")]
private function GetNumberArray(
   [ArrayElementType("String")] 
   parameter:Array):Array
{
   var myData:Array = ["1.0", "2.0", "3.0"];
   return myData;
}
0 голосов
/ 23 июня 2010

Flash 10 поддерживает векторы.

Используйте взамен Vector.<String>;)

...