|
|
|||||
Регистрация: Jun 2008
Сообщений: 126
|
Спасибо за справку.
Но роль importа до сих пор не ясна. Он же не помогает разрешить неоднозначность (скорее наоборот так как является обязательным). |
|
|||||
блогер
Регистрация: May 2008
Адрес: (0, 10, 185) в локальной системе
Сообщений: 721
Записей в блоге: 6
|
Си невсчет — там компилятор вообще не беспокоиться о поиске файлов, тупо компилирует все файлы, которые ему подсунули на вход включая те, что записаны в #include. Во флеш компилятор работает немного по-другому: компиляция начинается с главного класса (document class), а затем идет по импортам, подключая все необходимые классы. В этом есть свои плюсы — подключаются только те классы, что действительно используются. С большой натяжкой можно сказать что import в AS3 это аналог #include в Си++.
|
|
|||||
Регистрация: Jun 2008
Сообщений: 126
|
Яски
Компилятор может подключить необходимые классы и без инструкции import. Я же ему указываю: |
|
|||||
Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
|
sospamom, разовью вашу мысль может станет понятнее.
не смущает, что здесь мы указваем тип Point через двоеточие? Ведь видно же, что мы создаем экземпляр класса поинт и компилятор мог бы и сам догадаться, что к чему. Зачем вобще var? Раз нет такой переменной, ну так пусть компилятор озаботится и продекларирует ее. Почему вас именно import обеспокоил, к чему эти полумеры? |
|
|||||
Регистрация: Jun 2008
Сообщений: 126
|
kup
Неудачный пример, компилятор не сможет догадаться переписать как ведь мы можем написать и var нужна например в данном случае: чтобы компилятор понял, что мы сейчас работаем с переменной в области видимости функции. Это не полумеры, мы до всех доберемся просто в произвольном порядке |
|
|||||
Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
|
Цитата:
Цитата:
Чтобы незахламлять исходники. Просто чтобы использовать класс, вы должны его продекларировать. Компилятор ничего незнает про файлы и ваши полные-пути ему лесом. То что вы хотите, должно иметь примерно такой синтаксис. Последний раз редактировалось kup; 19.07.2009 в 23:04. |
|
|||||
Modus ponens
|
Цитата:
- что paket1 это не локальная переменная, которую забыли объявить. - что это не поле класса (унаследованое откуда-нибудь) - что это не неймспейс объявленый где-нибудь рядом в коде. - а что это файл где-то то ли на глобальных, то ли на пользовательских путях, а может быть это адрес в SWC, а может это адрес в SWZ... Понимаете, если бы компилятор искал каждую необъявленную переменныю в файловой системе, вы бы результаты компиляции ждали бы минутами даже в маленьких проектах... вот поэтому импорт и нужен - чтобы явно указать, что используется пакет с таким именем. Для большей наглядности.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 19.07.2009 в 22:53. |
|
|||||
[+1.3 20.07.09]
|
не ждал бы никто ничего минутами, можно было бы адресовать пути по которым ищутся исходники, и один раз запомнить все расположения. под флексом этим бы занялся fcsh, под flash ide - она сама.
проблемма не втом, если import A.B; new B(); компилится и просто new B(); компилится, тогда зачем импорт?? поповоду таких косяков как то что мы можем объявить локальную переменную с именем как у некоторого класса - то и пути не нужны чтоб вызвать проблеммы. мне например больше нравится что переменную можно объявить в одном цикле и использовать в другом. но не отвлекаемся вспоминаем про импорт |
|
|||||
Modus ponens
|
Ну ОК... может third time the miracle... еще раз, import это точно такое же указание, как и var - импорт говорит о том, что вы используете пакет, а не свойство - посмотрите еще раз на код выше, вы понимаете, что если в нем используется точно такая же констукция, как та, что вы предложили раньше, и при этом ничего не импортируется?
кроме того, кеширование - процесс занимающий много времени, а ваше предложение "кешировать все подряд" - только ради того, чтобы не писать импорты... смотрите... сорцы АС компилятора открыты, спортивного интереса ради возьмите да и перепишите эту часть, я не думаю, что это прям так уж сложно - ну и посмотрите, сколько времени у вас займет компиляция с импортами и без...
__________________
Hell is the possibility of sanity |
|
|||||
[+1.3 20.07.09]
|
Package { import flash.display.Sprite; public class T extends Sprite { function T() { var Sprite:Sprite = new Sprite; } } } поэтому опять вопрос: зачем нужна импорт если она ничего не делает? З.Ы. кеширование даже 1000 файлов ты особо не заметишь Последний раз редактировалось iNils; 20.07.2009 в 14:07. |
Часовой пояс GMT +4, время: 11:39. |
|
« Предыдущая тема | Следующая тема » |
|
|