Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   статические/динамические переменные (http://www.flasher.ru/forum/showthread.php?t=174568)

anmelegov 28.01.2012 15:50

статические/динамические переменные
 
объясните пожалуйста в двух словах в каких случаях стоит использовать статические переменные, а в каких динамические и какой это дает профит

Добавлено через 32 секунды
объясните == приведите примеры

elder_Nosferatu 28.01.2012 16:23

Немного сбивает с толку "динамическая переменная"... Если имеете ввиду переменную динамического класса, то она ничем не отличается от обыкновенной, кроме того, что она не объявленна заранее. Ну а если вопрос о переменных и static-переменных, то разница в том, что static-переменная принадлежит классу (за пределами класса к ней обращаются через имя класса), а обычная переменная у каждого экземпляра своя.

thirst 28.01.2012 20:52

Static обычно используется в тех случаях, когда нужно вызывать что-то очень много раз. Это делается для экономии ресурсов (Обращение идет не к экземпляру класса, а к ссылке на этот класс). Например, класс Math. Если бы он не был статический то, чтобы вызвать метод надо было делать так:
Код AS3:

...
var math:Math = new Math();    // Создаем экземпляр класса, заполняем лишнюю память
math.someMethod();        // Вызываем нужный нам метод
...

Но это было бы очень затратно хранить объект в памяти, когда нам нужны какие-то методы класса, а не взаимодействие с другими объектами. Для этого и есть статик:
Код AS3:

...
Math.someMethod;    // Вызываем нужную функцию, не насилуем память чем-то лишним
...

Конечно если нужный класс импортирован к код. Надеюсь, понятно?


Экземпляр класса dynamic (не переменная, не метод, а класс) служит для создания динамического объекта. Например, есть динамический объект simpleMath, который содержит метод multiplication (умножает единственный аргумент метода на 2), который используется в коде:
Код AS3:

...
var simpleMath:SimpleMath = new SimpleMath();
simpleMath.PI = 3.14// Здесь мы добавляем новое свойство пи в наш объект, который можно использовать в коде
...

Dynamic классы можно использовать, чтобы добавить какие-то свойства или методы, которые могут использоваться не во всем коде (в некоторых функциях). Т.е. можно не создавать исходный объект с какими-то функциями, а добавить функцию в этот объект в месте, где его использовать. Делается это также для экономии памяти

anmelegov 29.01.2012 15:36

thirst спасибо... первая часть твоего сообщения ответила на все мои вопросы.. интересовал именно профит от использования static var

iNils 29.01.2012 15:59

Цитата:

Сообщение от thirst (Сообщение 1059653)
Static обычно используется в тех случаях, когда нужно вызывать что-то очень много раз. Это делается для экономии ресурсов (Обращение идет не к экземпляру класса, а к ссылке на этот класс). Например, класс Math. Если бы он не был статический то, чтобы вызвать метод надо было делать так:

Логика отсутствует, особенно про "очень много раз". Статик используется в том случае, когда контекст выполнения статичен. Тот же Math статичен, потому что смысла создавать экземпляр нет.

anmelegov 29.01.2012 16:16

iNils, объясни пожалуйста, ниче не понятно

in4core 29.01.2012 17:31

Статика видна и меняется во ВСЕХ экземплярах, обратное - лишь в определенном.

silin 29.01.2012 18:48

путаница в терминологии детектед
имхо нет смысла говорить о static vs dynamic, ибо теплое и мягкое ...

можно говорить о статических свойствах/методах класса (не имеют отношения к экземплярам, не имеют контекста this) и свойствах/методах экземпляра(имеют отношение только к конкретному экземпляру, this в методах указывает на этот экземпляр)

и можно говорить о свойствах, определенных на этапе компиляции, и динамических свойствах dynamic класов, т.е. свойствах, которые определены уже в рантайм типа instabce["prop"]=1; или SomeClass["prop"]=2; ,
к слову, второй пример получается полной хреновиной в терминологии топика, потому как по отношению к контексту это статическое свойство, а по жизни приложения - динамическое :)

насчет профита от использования и 'ничего не понятно' сложнее, в двух словах что-то никак, но это в любом букваре есть наверное

anmelegov 29.01.2012 19:36

задал простой вопрос, получил кучу какой-то философии, поссорил пацанов, расстроился и ушел читать книги ...


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

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