Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.09.2010, 11:34
Gogan вне форума Посмотреть профиль Отправить личное сообщение для Gogan Найти все сообщения от Gogan
  № 1  
Ответить с цитированием
Gogan

Регистрация: Mar 2009
Сообщений: 65
По умолчанию Определение типа переменной. typeof проблема.

Нужно определить тип свойства, в моем случае, тип значения , которое возвращает getter.

Код AS3:
    private var _str:String;
 
    public function get str():String
    {
        return _str;
    }
 
    public function set str(value:String):void
    {
        _str = value;
    }
 
private var someFunct():void{
    var hh:* = getQualifiedClassName(this["str"]);//null
    var dt:* = describeType(this["str"]);//'<type name="null" isDynamic="false" isFinal="true" isStatic="false"/>'
     var ss:Boolean = _str instanceof String;//false
 
     var string:String = typeof(this.str);//string
     var necessaryValue:String = typeof(this["str"]);//НУЖНО ИМЕННО ЭТО!!!!!!!!!!!
}
Повторюсь, меня устраивает Только этот вариант: typeof(this["str"]) =="string") Так как имя свойства я читаю из XML. Если инициализировать переменную со старта, то я получу нужный результат:
Код AS3:
private var _str:String = "some string value";
...
trace(typeof(this["str"]));//string
Но опять же мне я не знаю инициализирована переменная или нет и инициализировать её не могу...
Как мне добиться нужного результата? То есть зная имя свойства (String) , получить тип этого свойства ?

Старый 17.09.2010, 11:57
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Я кроме последнего предложения почти ничего не понял =\ Что же хочется?
String - не имя св-ва (имя св-ва - _str или str), а название класса. Ну собсно getDefinitionByName это
Код AS3:
var foo:* = new (getDefinitionByName("String") as Class)("preved");
            trace(foo);
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 17.09.2010, 12:44
Gogan вне форума Посмотреть профиль Отправить личное сообщение для Gogan Найти все сообщения от Gogan
  № 3  
Ответить с цитированием
Gogan

Регистрация: Mar 2009
Сообщений: 65
А ведь я так старался попонятнее объяснить ...
Код AS3:
 
    private var _str:String;
 
    public function get str():String
    {
        return _str;
    }
 
    public function set str(value:String):void
    {
        _str = value;
    }
 
private var someFunct():void{
     trace( typeof(this.str) );//string - (возвращает то, что нужно, но мне не подходит 
                                      //такое обращение к свойству (this.str)    
     trace( typeof(this["str"]) );//object - а мне нужно "string",и мне нужно именно 
                                        //такое обращение к свойству (this["str"])   
}
Мне нужно по имени свойства получить тип значения которое оно может принимать. В моем случае мне нужно как то определить, что свойство (str) принимает значение String.

Старый 17.09.2010, 14:04
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
А, понял, пока не проинитить _str getQualifiedClassName нулл возвращает. Возникают тупые вопросы почему бы не вбить String жестко, т.к. 1) геттер может вернуть только строку или нулл 2) переменная, которую возвращает геттер тоже нулл, либо строка 3) почему бы не проинитить пустой строкой. Ну и собсно по указателю с каким-то типом в общем случае может находиться другой тип и до его инициалиализации тип узнать нельзя (это про getQualifiedClassName). typeof, похоже, может рассказать про неинициализированную переменную, но, похоже по тем самым причинам немного http://www.adobe.com/livedocs/flash/...rs.html#typeof
Возможно, хватит приведения того, что возвращает typeof, к кошерному виду (вроде string -> String).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 17.09.2010, 14:23
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
В моем случае мне нужно как то определить, что свойство (str) принимает значение String.
Используйте describeType()

Старый 17.09.2010, 14:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код AS3:
var str:String;
var n:String = 'str';
trace(describeType(this).variable.(@name==n).@type);
В вашем случае надо вместо variable — accessor.

Старый 17.09.2010, 15:47
Gogan вне форума Посмотреть профиль Отправить личное сообщение для Gogan Найти все сообщения от Gogan
  № 7  
Ответить с цитированием
Gogan

Регистрация: Mar 2009
Сообщений: 65
По умолчанию rascheska

АААААААААААААА, descrybeTypes() нужно не к свойтву, а к объекту применять и далее искать нужный getter!!!!


Последний раз редактировалось Gogan; 17.09.2010 в 16:17.
Старый 17.09.2010, 16:13
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 8  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Gogan, какие-то проблемы?

Старый 17.09.2010, 16:15
Gogan вне форума Посмотреть профиль Отправить личное сообщение для Gogan Найти все сообщения от Gogan
  № 9  
Ответить с цитированием
Gogan

Регистрация: Mar 2009
Сообщений: 65
etc - вы просто рвёте ! Огромное спасибо. Ваши ответы можно найти по всему интернету и они всегда адекватные и бьют точно в цель ! недавно мне тоже очень помог один ваш пост, сдвинул с мертвой точки.

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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