Replies (20)

  • @deep, а в чем проблема?
  • @zEvg, Ну хотябы в том, что
    var c:Class = Vector.<int>;
    дает ошибку компиляции, а
    var c:Class = Array
    все нормально
  • @deep, Подозреваю что так работает var c:Class = Vector;
  • @deep, Это же генерик, от него толк только на этапе компиляции
  • @deep, дальше больше. если по привычке считывать класс аля
    var c:Class = Object(vector).constructor;
    мы снова получим баг.
    Используя flash.utils мы опять таки, чаще всего приводим все к Class, и самое страшное тут будет то, что если приводить через as, мы в итого не получим бага выполнения, а значение будет null
  • @zEvg, Интересно, но тут все работает actualwave.com
    но факт, что у меня сегодня сдк 4.6.1 не собирала такую конструкцию
  • @zEvg, Мне так не надо, мне надо именно дженерик и именно на этапе выполнения. Ты путаешь java и flash, во флеше дженерики работают на этапе выполнения.
  • @deep, Это перл Note, however, that when using the push() method or unshift() method to add values to a Vector, the arguments' data types are not checked at compile time. Instead, they are checked at run time.
  • @zEvg, из оф доков help.adobe.com
  • @zEvg, ЧТо не так. На этапе выполнения чекается, мне так и надо. Ясное дело что на этапе компиляции проверить что реально лезет в пуш невозможно!
  • @deep, Как это невозможно?)
  • @zEvg, Я понял как тебе надо, перл не к этому, просто понравилось
  • @deep, Вот в java дженерики сделаны через жопу и там они только для правильного автокомплита и на этапе компиляции чекается что можно, а при выполнении их попросту нету и можно вписать все что угодно, во флеше нет честных дженериков, но те что есть чекают тип на этапе выполнения тип итемов.
  • @zEvg, По моему это не перл, просто реальность. Чекать на этапе выполнения нереально, т.к. в пуш могут пихать обычный нетипизированный обжект и пока не выполняется прога не понятно, что именно туда пихнут. В haxe например, нетипизированные объекты сведены к минимуму и там есть смысл чекать дженерики на этапе компиляции.

    У знакомого только сегодня был случай, во время выполнения он в вектор объектов пихал число и получал баг. Это лучше чем ничего.
  • @deep, Сходу проверку сделать реально, видно есть какие-то подводные камни из-за которох талантливые инженеры адоби это не сделали. Type safe в рантайме это конечно круто, но на этапе компиляции это все же полезней. Раньше нашел баг — раньше пофиксил.
  • @zEvg, Конечно основная фича, как я думаю, вектора во флеше — это не тайп сейф а скорость...
  • @zEvg, да очень просто.
    vector.push(12 + "12");
    чтобы точно знать тип, чего ты пушаешь, надо выполнить все, что хранится в скобках, а такие операции делают только самые умные компиляторы.
  • @deep, ну что же? тогда чего сетовать? ведь компилятор даже далеко не умный.
  • @zEvg, из-за динамического приведения типов и вправду в такой проверке нету смысла...