Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Неявное преобразование типов (http://www.flasher.ru/forum/showthread.php?t=99497)

offlight 07.08.2007 15:28

Неявное преобразование типов
 
Кто-нибудь может объяснить такую байду:
Код:

trace(typeof obj.interval); //Number. interval задана в классе как var interval:Number=0;
obj.interval=obj.xml.firstChild.attributes.interval;//атрибут некоего узла xml, тип String, естественно.
trace(typeof obj.interval);//String

То есть не только не возникает сообщение о несовместимости типов, но и вообще происходит неявное преобразование, причём к ПРАВОЙ части! как такое может быть?

версия Flash 8.

etc 07.08.2007 15:39

Проверка типов происходит на стадии компиляции только. В AS3 была бы ошибка.

chingachgoog 07.08.2007 15:47

у флеша динамический код (реальный), а всякие надстройки-интерфейсы (типа AS2) лишь для удобства (кому это удобно, другой вопрос :) ).

etc 07.08.2007 15:51

Какой-какой код?

bbexp 07.08.2007 16:49

offlight, а Вы понимаете что interval и obj.interval - это разные переменные?
obj.interval никак и не типизируется, почему и возможно переопределение.

etc 07.08.2007 16:57

bbexp, написано же, что var interval это в классе. А obj является, соответственно, его экземпляром.

chingachgoog 07.08.2007 17:05

Цитата:

Сообщение от __etc
Какой-какой код?

Динамический.
В AS тип переменной определяется интерпретатором динамически, в ходе выполнения программы.
(И в этом лично мне AS очень симпатичен)

offlight 07.08.2007 23:27

Цитата:

offlight, а Вы понимаете что interval и obj.interval - это разные переменные?
__etc правильно сказал, interval - это переменная объекта obj.interval, поэтому по отдельности даже не рассматривается.
или это вы про obj.xml.firstChild.attributes.interval? это как раз другая переменная и есть. Это вообще даже не переменная :) это атрибут узла в xml файле, в этом как раз и суть вопроса.

Цитата:

Проверка типов происходит на стадии компиляции только. В AS3 была бы ошибка.
Ну да, похоже на то. Только flash 8, AS2 соответственно. То есть тип obj.xml.firstChild.attributes.interval не может быть определен на стадии компиляции, так? и дальнейшие проверки вообще не делаются? и может поменяться тип переменной, которая типизирована, так получается? или я чего-то не понял :cool: неожиданно.

etc 07.08.2007 23:40

chingachgoog, очень жаль, что нравится. А мне вот не очень. И динамические переменные — это относится к AS1/AS2.

offlight, отказываться от типизации в таком случае не стоит совершенно. Но надо знать и преобразовывать явно, в случае аттрибутов XML.


Часовой пояс GMT +4, время: 12:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.