![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Здравствуйте уважаемые.
Вопрос в следующем. Есть метод в задачи которого входит получать из xml значение по имени параметра(или атрибута) возвращать его в выбранном виде(String, int, XML, и т.п.). public function getValue(_nameProperty:String, _property:XML = null, _itsLabel:Boolean = false, _typeReturn:int = T_XML):* { if (_property == null) { _property = dProperty; // если список свойств в XML отсутствует используем значения по умолчанию } var dProp:XML; if (_property.@id) // если есть id значит это объект, ищем его список свойств в значениях по умолчанию { dProp = getObject(dProperty.@id); } //Проверяем последовательно свойство, атрибут, свойство по умолчанию, атрибут по умолчанию пока не найдем значение var res:* = _property[_nameProperty][0]; if (!res) { res = _property.@[_nameProperty][0]; if (!res && dProp) { res = dProp[_nameProperty][0]; if (!res) { res = dProp.@[_nameProperty][0]; } } } //Свойства он определяет как undefined. Если бы res был определен как определенный тип то получил бы значение. switch (_typeReturn) { case T_INT: res = res as int; break; case T_BOOLEAN: var s:String = res as String; res = (s.toLowerCase() == "true"); break; case T_NUMBER: res = res as Number; break; case T_STRING: res = res as String; case T_XML: res = res; break; default: throw Error ('Ошибка преобразования типов при получения свойства.'); return null; break; } trace (res); // на выходе undefined return res; } Добавлено через 1 час 20 минут Пока придумал только один вариант. res делаю не "*", а "String" и далее из строки делаю преобразования в нужный тип. может кто подскажет другой способ?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 18.11.2008 в 13:06. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Цитата:
![]()
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
а вот так попробуй
switch (_typeReturn) { case T_INT: return parseInt(res); case T_BOOLEAN: var s:String = res.toString(); return (s.toLowerCase() == "true"); case T_NUMBER: return parseFloat(res); case T_STRING: return res.toString(); case T_XML: return new XML(res); default: throw Error ('Ошибка преобразования типов при получения свойства.'); return null; } |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Собственно так и сделал только через as
![]() var ret:*; switch (_typeReturn) { case T_INT: ret = res as int; break; case T_BOOLEAN: var s:String = res as String; ret = (s.toLowerCase() == "true"); break; case T_NUMBER: ret = res as Number; break; case T_STRING: ret = res as String; case T_XML: ret = new XML(res); break; default: throw Error ('Ошибка преобразования типов при получения свойства.'); return null; break; } return ret
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
SunShadow, оператор «as» не занимается преобразованием типов. А в таком варианте ваш switch никакого смысловой нагрузки не несет.
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Цитата:
http://flasher.ru/forum/showpost.php...1&postcount=87
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
SunShadow, не путайте каст и конвертацию.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|