Форум 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=144918)

3p.station 24.09.2010 15:15

вопрос про создание переменных
 
Привет уважаемые флешеры!
часто вижу в чужом коде, что сначала создается переменная, а потом уже присваивается ей значение
например
Код AS3:

 var container:Sprite;
container = new Sprite();

я же до этого всегда делал так :
Код AS3:

var container:Sprite = new Sprite()

скажите плиз есть ли тут принципаилаьная разница ? или это дело вкуса

Dezar 24.09.2010 15:53

я сам новичок.но я не вижу разницы вообще между кодами.
вот если было написано

Код AS3:

private var container:Sprite;
...
container = new Sprite();

И
Код AS3:

var container:Sprite = new Sprite();

тут разница есть.

3p.station 24.09.2010 17:01

всмысле? какая ? в типе перменной?

honest_man 24.09.2010 17:37

Возможно Dezar под (...) подразумевает "иной код". Якобы не всегда доцельно привязывать к переменной значение сразу же при ее создании.
А может он просто загнался, полагая что нельзя присвоить переменной мод.управления доступом и привязывать значение одновременно! )
в общем гадать можно долго, но суть в том что:


Если необходимо сразу присвоить значение, лучше писать в одну строчку, т.е. "var идентификатор:тип = значение ;". Но разница ТОЛЬКО в меньшем количестве действий! :) Ведь тем мы и отличаемся от обезьян - делаем меньше ненужных действий. Код будет читабельнее.

Вот простое правило: Чем меньше в коде точек с запятой ";", тем качественне! ;)

Bgg 24.09.2010 17:55

Цитата:

Сообщение от 3p.station (Сообщение 938310)
всмысле? какая ? в типе перменной?

Разница в месте объявления. У вас в примере все переменные локальны.

Не всегда возможно инициализировать переменную, если она является полем класса. Например:
Код AS3:

private var myObject:MyObject = new MyObject(stage);//stage ещё нет


КорДум 24.09.2010 17:58

Нет, топикстартер спрашивает, в чем разница между двумя строчками и одной, не затрагивая область видимости. Мне это тоже интересно. И думается, что разницы нет, как в скорости, так и в лучшести. Разве что, две строчки занимают больше места, чем одна :D
А вообще, проведите тест, где в цикле создается 10к локальных переменных с той лишь разницей, что в первом цикле две строки, а во втором одна. А потом напишите сюда.

honest_man 24.09.2010 18:03

Эм... Bgg, а про: "У вас в примере все переменные локальны."
вы как догадались? Моды доступа уже обязательны для переменных экземпляра?

КорДум, ну что вы, как мы можем эксплуатировать вашу идею!? =)

3p.station 24.09.2010 18:27

спасибо!
да действитльно не мне не важно была область видимости
просто часто в чужих кодах встречаю именно такой подход
вот и решил спросить

спасибо

пс
Код AS3:

private var myObject:MyObject = new MyObject(stage);//stage ещё нет

ну это понятно

Rzer 24.09.2010 18:33

Предположим у нас есть код:

Код AS3:

for (var i:int=0; i < items.length; i++){
  //Здесь что то происходит
}

Предположим нам надо добавить ещё один цикл после этого. Тогда var i:int; целесообразно вынести выше двух этих циклов (чтобы не было варнинга компилятора - мол переопределение переменной). Так почему бы сразу не объявлять переменную в самом начале кода? Я считаю в этом смысл. А так дело вкуса. Считаю, что целесообразней объявлять переменную вначале, а всегда на практике делаю наоборот.

КорДум 24.09.2010 18:34

honest_man, я могу письменно подтвердить свое согласие на эксплуатацию. Одно условие - результаты эксперимента должны быть известны и мне (:


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

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