Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander Orlovsky                   2:5020/400     17 Mar 2003  14:18:11
 To : Artem Chuprina
 Subject : Re: ссылка из package
 -------------------------------------------------------------------------------- 
 
 On Mon, 17 Mar 2003 09:34:34 +0000 (UTC), Artem Chuprina <ran@wizzle.ran.pp.ru>
 wrote:
 
 >Здравствуй, Alexander Orlovsky.
 >
 >
 >AO> Это.. у меня такая колбаса.. (извиняюсь)
 >
 >AO> В модуле MyMod есть пакет 
 >AO> MyPakName (MyMod eq PakName - в моем случае)
 >AO> в нем объявил ссылку на анонимный массив:
 >AO> $MYREF = ["1","2","3"];
 >
 >AO> В основной программе:
 >
 >AO> use MyMod;
 >AO>  подставляю в параметр одной функции, в которой один из параметров ссылка
 >AO> на массив
 >
 >AO> func ( $MyPakName::MYREF );
 >
 >AO> И это не фурычит :(
 >AO> А если локально объявить эту же ссылку, то работает.. 
 >
 >А она у тебя как my объявлена или как our?
 
 Объявлена как my, но я ведь к ней "напрямую обращаюсь" через 
 имя_пакета::имя_переменной
 Я почему-то думал, что так мне должно вернуться "правильное" значения, а
 опровержения этому я не читал вроде... 
 
 Хотя, сейчас в camel book заглянул: "Более правильным способом доступа к
 глобальным переменным, особенно из программ и модулей с объявлением use strict,
 является объявление our<...> в отличие от лексической области видимости my<...>
 обеспечивает доступ к глобальной переменной в текущем пакете, маскируя
 одноименные лексические пременные, которые в противном случае закрыли бы от вас
 эту глобальную переменную. В этом отношении переменные our действуют точно так
 же, как переменные my."
 Дык, у меня же нет одноименных локальных переменных! (в предыдущий пример не
 смотрите, т.к. объявление лок. переменной уже убрал - т.к. там я "ступил") 
 
 Так почему я не могу обратиться к ссылке подобным образом:
 $имя_пакета::имя_переменной?  Чем это объясняется? Втолкуйте, плиз.
  Я понял, что это потому, что я ее вызываю из своей функции (т.е. из след.
 "уровня вложенности" лекс. видимости ) Так что же "закрыло" мне мою глобальную
 переменную? Ведь в более "верхнем" уровне, т.е. при обращении не из функции -
 подобная ссылка ($имя_пакета::имя_переменной) работает...
 
 Кста, объявил our - заработало. Стопудово, "что-то" перекрывает.. :)
 --- ifmail v.2.15dev5
  * Origin: Ye 'Ol Disorganized NNTPCache groupie (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 ссылка из package   Alexander Orlovsky   17 Mar 2003 12:30:20 
 Re: ссылка из package   Artem Chuprina   17 Mar 2003 13:34:34 
 Re: ссылка из package   Alexander Orlovsky   17 Mar 2003 14:18:11 
 Re: ссылка из package   Artem Chuprina   17 Mar 2003 15:47:27 
 Re: ссылка из package   Alexander Orlovsky   17 Mar 2003 16:08:27 
 Re: ссылка из package   Artem Chuprina   17 Mar 2003 17:35:28 
Архивное /ru.perl/208036c93788.html, оценка 1 из 5, голосов 50
Яндекс.Метрика
Valid HTML 4.01 Transitional