Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
1

Существует ли переменная в классе?

04.10.2014, 10:00. Просмотров 1540. Ответов 24
Метки нет (Все метки)

Здравствуйте прошу помощи в освоении данного материала.
Появилась необходимость создать условие if в котором должна пройти проверка на существование переменной в определенном классе. В интернете пробовал искать и не чего не нашел. В прикрепленном файле пример))).
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
public var glob:String;   // переменная в классе написана так
 
 
if( существует ли переменная "glob" в классе "Net" ){
 
                    // если существует, тогда заходим в if
 
}
else{
 
                   // если не существует, тогда выполняй else 
 
}
Прошу помощи в освоении данного материала, заранее спасибо с уважением Сергей .
0
Вложения
Тип файла: 7z Пример.7z (6.0 Кб, 2 просмотров)
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2014, 10:00
Ответы с готовыми решениями:

Переменная изменилась в одном классе, куда "воткнуть" код в другом классе
Привет всем, Достало это событийное программирование. :wall: Я не делаю событийные "калькуляторы"...

Проверить существует ли переменная?
Смешной вопрос, но никак не могу найти, как сделать проверку на существование переменной?

Переменная в другом классе
У меня есть два класса: AuthorizationForm и SendMailForm. как мне сделать, чтобы textBox.Text из...

Строковая переменная в классе
Здравствуйте, прошу помощи. У меня в Проекте есть Класс "MyClass", в нём мне нужно объявить...

Неинициализированная переменная в классе
Привет, я проверяю всякие разности в С++ и наткнулся на непонятное мне явление. Я могу использовать...

24
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
04.10.2014, 12:20 2
hasOwnProperty()
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
04.10.2014, 18:51  [ТС] 3
Спасибо за отклик)) но не помогло, и все равно ошибка:
"Обращение возможного неопределенного свойства glob через ссылку со статическим типом Net ."
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
04.10.2014, 18:59 4
Если сравнивать потенциально отсутствующее свойство, то можно сравнивать с типом undefined, если с просто не заданным для нечисловых переменных, то с типом null, если для типа Number - NaN.
0
04.10.2014, 18:59
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
04.10.2014, 19:11  [ТС] 5
Пробовал undefined, null, NaN не помогло, все равно та же самая ошибка))
"Обращение возможного неопределенного свойства glob через ссылку со статическим типом Net ."

прошу посмотреть приложенный пример, пример простой, там два класса "Est" и "Net".
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
04.10.2014, 19:17 6
Serega931, попытки в студию.
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
04.10.2014, 19:38  [ТС] 7
Вот пример))
0
Вложения
Тип файла: 7z Пример.7z (5.4 Кб, 2 просмотров)
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
04.10.2014, 22:40 8
ActionScript 3
1
if( net_peremennoi["glob"] == undefined ){//...
И далее по образцу.

Не по теме:

Цитата Сообщение от Serega931 Посмотреть сообщение
Вот пример))
я надеялся на код в браузере - его не много, так качать не хотелось... :(

0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
05.10.2014, 03:51  [ТС] 9
Сори за код))))))

net_peremennoi["glob"] думал, что таким образом можно обращаться только к массивам!!!, а классам..... я всегда был строго УБЕЖДЕН, что к конкретной функции или переменной в конкретном классе можно обращаться только через точку, уже огромное спасибо, это открытие для меня!!!, что классам можно обращаться так же как к массивам.

ActionScript 3
1
2
3
4
5
6
7
if( est_peremennoi['glob'] == null ){  // заходит в if
 
if( net_peremennoi['glob'] == undefined ){   // все равно ошибка, 
 
// только уже не ошибка компиляции, а вылазит ошибка в окно "вывода" 
 
// ReferenceError: Error #1069: Не удалось найти свойство glob в Net; отсутствует значение по умолчанию.

у меня не получилось, может что не так делаю))
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
05.10.2014, 12:09 10
Цитата Сообщение от Serega931 Посмотреть сообщение
классам можно обращаться так же как к массивам
По сути это обращение к динамическому объекту, т.е. объекту, набор свойств которого не известен. Что в массиве хранится нам тоже не известно.
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
05.10.2014, 12:43  [ТС] 11
Цитата Сообщение от TanaTiX Посмотреть сообщение
Что в массиве хранится нам тоже не известно.
да согласен, но это наверно для массивов и для динамических классов))
---------
в моем примере ошибка все равно возникает, только уже не на уровне компиляции, а появляется теперь в окне "вывода", то есть теперь приложение скомпилировалось, но как только запускаем вручную или конструктором функцию с if-ами, то функция даже до конца не доходит, к примеру если поставить trace("1111"); после этих двух if, то trace не сработает.

И я так понимаю, что в данном пример не получиться обойти эту ошибку??? обойти ошибку так, что бы данная функция дошла до конца, и в if не попала, и не вывелась в окно ошибок.

или обойти ошибку можно, только, что то я не понял как это сделать))))
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
05.10.2014, 13:12 12
Serega931, про динамичность забыли
ActionScript 3
1
public dynamic class//и далее объявляем класс как обычно
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
05.10.2014, 13:26  [ТС] 13
Помню про динамические классы, но честно ни разу не использовал. Использовал простые классы, где необходимо в переменную загружать экземпляр класса (типа new Class; ) еще использовал статистические, но в статистических классах нашел один небольшой "косичек", статистический класс как я понял не может проводить операцию addChild(), да же если мы унаследовались от MovieClip и из-за этого были у меня проблемы, когда об этом вдруг узналось, пришлось долгое время все перестраивать))))

Цитата Сообщение от TanaTiX Посмотреть сообщение
//и далее объявляем класс как обычно
А динамический класс, он как то влияет на производительность???? ну например если я все обычные классы заменю на динамические???? ведь это удобнее будет, налету все создавать и удалять)))) или так делать не стоит, если не стоит, то почему?????
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
05.10.2014, 13:42 14
Цитата Сообщение от Serega931 Посмотреть сообщение
нашел один небольшой "косичек"
Вы ошибаетесь. Относительно всего, что написали про статику.
Цитата Сообщение от Serega931 Посмотреть сообщение
А динамический класс, он как то влияет на производительность?
При использовании динамических классов производительность - последнее, над чем стоит думать. Из-за того, что вы используете динамические классы наверняка у вас будет много других косяков, тормозящих приложение
Так делать не стоит потому что лучше использовать типизированные объекты - тогда у вас не будет каши в проекте.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
05.10.2014, 13:55 15
Лучший ответ Сообщение было отмечено Serega931 как решение

Решение

При использовании динамических классов производительность - последнее, над чем стоит думать.
Ваще бредятина! Думать нужно даже тогда, когда производительность и не нужна, Вы же хотите стать программистом.
ТС, Вы жестко тупите! Я же показал что нужно -
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package {
    
    import flash.display.Sprite;
    
    public class Main extends Sprite {
        
        public function Main() {
            var test:Test = new Test();
            
            if ( ! test.hasOwnProperty('propName') ) // если свойства нет
            {
                
            }else { // если свойство есть
                
            }
        }
    }
}
1
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
05.10.2014, 14:21  [ТС] 16
ХАААА)))) УРАААА)))) это то, что я искал!!! bus СПАСИБО!!!
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
05.10.2014, 14:50 17
bus, вот у меня при создании объекта внутри метода тоже работает, но если вынести переменную в поле класса, то только с динамическими экземплярами классов.
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
05.10.2014, 15:11  [ТС] 18
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package  {
    
    import flash.display.MovieClip;
 
    public class Primer extends MovieClip{
 
    
    public var net_peremennoi:Net;
    public var est_peremennoi:Est;
    
    
    public function Primer():void{
        
                    net_peremennoi = new Net();     // тут НЕ прописана переменная
                    est_peremennoi = new Est();     // тут    прописана переменная
                    
                    
    /*ОШИБКИ НЕТ*/ if( net_peremennoi.hasOwnProperty('glob') ){    trace("переменная ЕСТЬ захожу в if ");         }
    /*ОШИБКИ НЕТ*/ else{                                           trace("переменной НЕТ захожу в else");          }
        
                    if( est_peremennoi['glob'] == null ){           trace("переменная ЕСТЬ захожу в if ");         }
                    else{                                           trace("переменной НЕТ захожу в else");          }
        
    }
    
    
    }
}
у меня все нормально работает)))
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
05.10.2014, 15:20 19
TanaTiX, значит у Вас что-то не то..
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package 
{
    import flash.display.Sprite;
        
    public class Main extends Sprite 
    {
        private var _test:Test = new Test();
        
        public function Main() 
        {
            this.test();
        }
        
        private function test( ):void
        {
            trace( _test.hasOwnProperty('a'),
                      _test.hasOwnProperty( 'b' ),
                      _test.hasOwnProperty( 'method' ),
                      _test['a'] == null); // true, true, true, true
        }
    }
}
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package  
{
    public class Test 
    {
        public var a:Object = null;
        
        private var _b:String;
        
        public function Test() 
        {
            
        }
        
        public function method( ):void
        {
            
        }
        
        public function get b():String 
        {
            return _b;
        }
        
        public function set b(value:String):void 
        {
            _b = value;
        }
        
    }
 
}
0
TanaTiX
Модератор
2803 / 1659 / 169
Регистрация: 19.02.2011
Сообщений: 6,087
Завершенные тесты: 2
05.10.2014, 15:39 20
bus, да, у меня свойство hasOwnProperty в автокомплите не вываливается для наследника Sprite.
0
05.10.2014, 15:39
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2014, 15:39

Переменная не передается в классе
class gallary_class{ var $link; var $db; var $user; function set_vars($login){...

Переменная в другом классе
Есть код: class ChartPane extends JPanel { public static String formula = null; public...

Статическая переменная в классе
Нужно вывести на экран порядковый номер объекта, используя статическую переменную для подсчета...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.