![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
Хотите знать правду - напишите письмо разработчику. А иначе вы - троль и место этой теме во флейме.
|
|
|||||
|
Регистрация: Jun 2008
Сообщений: 126
|
iflamberg
1) Правду могут знать не только разработчики. 2) Разработчики тоже могут обмануть. 3) Я хочу услышать если не правду, то более-менее правдоподобное объяснение, а не те, что предъявлялись. |
|
|||||
|
стервочка (я мужик)
|
sospamom, Вам уже 3жды ответили, но Вы упор не видите. так что не вижу смысла в том, что бы "лично Вам" отвечать.
|
|
|||||
|
Регистрация: Jun 2008
Сообщений: 126
|
Ниже описана причина по которой компилятор хочет, чтобы программист обязательно использовал инструкцию import, даже если указывается полный путь к классу наподобие
Причина:
Так как в следующем коде нет строчки: то компилятор не ищет класс Class1 из пакета a в файловой системе. Компилятор считает a локальной переменной, а Class1 - её свойством. Таким образом ускоряется компиляция, ведь компилятор не обращается к файловой системе когда не надо. package { public class Main { public function Main() { var a = new A(); var b = new a.Class1(); } } } class A { var Class1:Class; } P.S. Были указаны и другие предположения о необходимости обязательного использования инструкции import, даже когда указывается полный путь к классу наподобие: Но эти предположения неверны. Предположение 1: import указывают, чтобы не указывать полный путь к классу. Почему предположение ошибочно: Это не объясняет обязательность использования инструкции import Предположение 2: import указывают, чтобы показать зависимости кода в данном классе, от классов в других пакетах. Почему предположение ошибочно: Если бы это была действительная причина, то разработчики компилятора вместо этого использовали бы следующий приём. В компиляторе добавили бы новый параметр, например: mxmlc.exe -addImports И компилятор в результате компиляции добавлял бы в исходные файлы комментарии по типу: package { /* Этот код зависит от: paket1.Class1 paket1.paket2.Class1 */ public class SomeClass { } } Данные вариант лучше, чем использование инструкции import по двум причинам: 1) Это комментарии, а не инструкции языка 2) Никто не сможет написать import *; а значит мы лучше будем видеть зависимости. То есть использование инструкции import наоборот ухудшает видимость зависимостей в коде. Предположение 3: Инструкция import используется, чтобы при наличии одноименных классов в разных папках узнать какой именно мы класс создаём. Почему предположение ошибочно: Инструкция import здесь не нужна, ведь мы указываем полный путь. Например: Предположение 4: Если мы имеем следующий код, то import поможет нам разобраться что именно создавать компилятору, экземпляр класса Class1 который лежит в пакете a или экземпляр класса Class1, который является свойством переменной a. package { import a.Class1; import b.Class1; public class Main { public function Main() { var a = new A(); var b = new a.Class1(); } } } class A { var Class1:Class; } В данном случае нам приходится писать полный путь так как импортируются два одноименных класса: import a.Class1; import b.Class1; Инструкция import не помогает разрешить противоречие между классом Class1 в пакете a и классом Class1, который является свойством локальной переменной a. |
|
|||||
|
Modus ponens
|
Цитата:
Да-да, вот мне как раз не хватает вписывать в каждом проекте сотни классов в билд-файл (такая фишка есть у COMPC - ну очень занимательный процесс), а потом при переносе этого проекта на другую машину, с другим расположением класс-путей процедуру повторить. Убрав импорт, вы тем самым предлагаете разработчикам вместе с програмистами ходить домой не через дверь, а через окно, при этом не задумываясь, что не все живут в одноэтажных котеджах... кроме всего прочего, подумайте еще и о том, что импорт не всегда указывает на реально существующий ресурс, в случае с RSL это будет исключительно виртуальная ссылка на класс, которого может вообще не существовать. Вы просто видите со своей позиции, которая не похожа на обычные условия, в которых люди что-то разрабатывают - для вас, возможно, и нет смысла в этой директиве, как возможно и в каких-нибудь других элементах языка, которые вам попросту неизвестны.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 20.07.2009 в 23:10. |
|
|||||
|
А вот кстати, если я импортирую что-то, что реально не использую, оно все равно будет вшито в конечный SWF-файл?
__________________
Дело не в тебе |
|
|||||
|
если импортируешь то помоему нет, а вот если ты где то хотя бы обьявишь переменную с данным типом, то будет.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|