![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Привет. Можно ли как-то переменным/функциям модификатор доступа указывать такой, чтобы их было видно в текущей папке, и во всех папках, которые на остальные уровни ниже.
Для чего: пишется к примеру библиотека с именем Lib, в ней есть класс LibMain.as, а в этом классе есть функция LibMain.cool(), и я хочу, чтобы эту функцию было видно из Lib/Mega/MegaClass.as, но не видно было из самого корневого as файла. Т.е. public не подходит. Namespace`ами как-то решается? |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Нет, нельзя и namespace это не то.
|
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Нет, не то, про все 4 модификатора доступа знаю, прекрасно понимаю как работают, видимо просто неудачно объяснил, что хочу. Но думаю, если бы такое решение существовало бы, то кто нибудь обязательно понял бы). Видимо структура неправильная у меня, раз такое потребовалось.
|
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Правильная не правильная, но у меня тоже такие потребности часто бывают
и я тоже, как и Вы жалею, что интернал со вложенными каталогами не работает. |
|
|||||
|
Не представляю ситуации, когда в подобном может быть реальная потребность. Если есть необходимость скрыть какие-то свойства от других разработчиков, которые будут с этим кодом работать - используйте неймспейсы. Если код пишется для себя, то пишите public и не засоряйте голову ненужными проблемами.
|
|
|||||
|
Да, вы можете использовать namespace как собственный модификатор доступа.
package pack { /** * ... * @author Mikhail Klabukov */ public class ClassA { private var my:Namespace=new Namespace('myNamespace'); public function ClassA() { } my function a():void { trace('with namespace'); } public function a():void { trace('no namespace') } } } package pack { /** * ... * @author Mikhail Klabukov */ public class ClassB { public function ClassB() { var ms:Namespace = new Namespace('myNamespace') var classA:ClassA = new ClassA() classA.ms::a() } } } |
|
|||||
|
Спасибо за наглядный пример! Никогда не пользовался нэймспэйсами, но хоть теперь увидел как это работает.
|
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|