![]() |
|
||||||||||
|
|||||
|
в общем вот код:
var mXML:XML = new XML();
var t:Number = 0;
mXML.parseXML("<item Value=\"20\"/>");
trace(typeof(t)); //number
t = mXML.firstChild.attributes.Value;
trace(typeof(t)); //string
Конечно это лечится простым приведением типа: Но как-то странно, что тип меняется самостоятельно .С такой проблем столкнулся во Flash 8, в других версиях не тестил(лень ставить).
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже! |
|
|||||
|
да уж..
очередной пример иллюзорности типизации в AS2: компилятор не знает тип свойства и привет.. AS3/Flex кидает в этом месте TypeError: Error #1034: Type Coersion failed: cannot convert .. Последний раз редактировалось silin; 13.01.2006 в 11:33. |
|
|||||
|
вот и я про то же..
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже! |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 221
|
Это же всем известный факт, что типы существуют только при компиляции, в основном для более удобной отладки.
Назначая тип Number, а затем присваивание в переменную значения с типом String автоматического приведения типов не произойдет, как не произойдет и ошибки компилятора, тк он не имеет представления кокого типа mXML.firstChild.attributes.Value. Это совсем не глюк, а дело в том что AS1 и AS2 фактически языки стандарта ECMAScript (подразумевает свободную типизацию). |
|
|||||
|
to KPaul
Да я в курсе какого стандарта AS и про то, что AS1 пообще не типизированный. Но вот другой факт удивляет: в книгах по AS2 (даже от Macromedia Press, eng) почти в каждом разделе говорится про типизацию, про важность указывать типы, что компилятор проверяет и т.д. Видно не все проверяет . Компил мог хотя варнинг бросить (для дебага проще). А то ищи, где у тебя глюк. Особенно это напрягает, когда у тебя иерархия классов, и свойтсво объявлено в родительском(в самом начале иерархии), а юзаешь класс дочерний(в конце иерархии). Вот и ищи, где гонит... особенно когда проект горит! Радует, что AS3 отошел от "скриптовости".
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже! |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 221
|
Сделай сомостоятельную проверку:
|
|
|||||
|
так ты сразу делай число а не строку
Number(expression) %))) и ниче ловить не нужно будет |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|