Просмотр полной версии : Отличие создания глобальной переменной от инициализации
tsarapkabel
17.04.2011, 01:19
Существует ли разница между созданием глобальных переменных при объявлении и созданием в теле функции?
За исключением момента присвоения значения.
Например:package {
public class Main extends Sprite {
private var _myVariable:Sprite = new Sprite(); //создаём сразу при объявлении
private var _myString:String = ""; //создаём сразу при объявлении
public function AnyFunction() {
}
}
}package {
public class Main extends Sprite {
private var _myVariable:Sprite;
private var _myString:String;
public function AnyFunction() {
_myVariable = new Sprite(); //создаём в теле функции
_myString= ""; //создаём в теле функции
}
}
}
Существует. первое как заявляет адоба работает быстрее. Ну а по факту, подумайте сами, удобнее же объявлять сразу ( если это возможно ), чем потом.
Psycho Tiger
17.04.2011, 02:35
Речь идёт о создании экземпляров строчкой объявления или перенос присвоения в конструктор?
Для сложных типов разницы нет, при компиляции они переносятся в конструктор. Для простых есть.
in4core, тема мне тоже интересна. Где можно прочитать, что там Адоуб пишет?
tsarapkabel
17.04.2011, 02:37
in4core , ты не совсем правильно понял вопрос :)
Adobe, Мук и прочие орильевцы создают только простые переменные (int, boolean, String, и т.п.), а экземпляры не простых создают в функциях (new Sprite(), new Timer(100,500), и т.п.).
В чём разница, почему не наоборот?
UPD:
Psycho Tiger, про сложные понял, а с простыми в чём отличие?
in4core, тема мне тоже интересна. Где можно прочитать, что там Адоуб пишет? Поищите по форуму, эта тема где то обсуждалась, кто то об этом писал, сказал с его* слов
Psycho Tiger
17.04.2011, 12:36
Psycho Tiger, про сложные понял, а с простыми в чём отличие?
В байткоде их объявление происходит где-то вне конструктора. Я не особо искал где, но я так и не нашел.
Денис подсказывает: "простые из таблиц берутся"
В байткоде их объявление происходит где-то вне конструктора. Я не особо искал где, но я так и не нашел.
Из таблиц ABC.
honest_man
17.04.2011, 12:39
tsarapkabel, никакой разницы между двумя блоками кода, вообще. Это эквиваленты. Просто в первом, создание и инициация происходит в инициализаторе класса, а во втором - создание в инициализаторе класса, а инициация в методе-конструкторе.
Логически, ни в скорости ни в каком-то эфимерном качестве не должно быть разницы.
tsarapkabel
17.04.2011, 15:03
Спасибо большое, вопрос исчерпан!
Zebestov
17.04.2011, 15:27
А по феншую (читай стилю)? Ну кто как делает обыкновенно?
easy.proger
17.04.2011, 15:33
А по феншую (читай стилю)? Ну кто как делает обыкновенно?
Честно, как то не задумывался, но судя по исходникам - обычно в конструкторе
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.