The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Нюансы: 'компилятор' perl"
Отправлено zs, 15-Янв-10 16:33 
>это НЕ функции!!!! это не Си!!!! это язык уровнем выше!!! интерпритаторный!!!!
>он не является сильно-типизированным языком как Си - это интерпритатор
>и my и local тут ограницения на уровне исполнения

будем считать - я понял.


>>>ну какбы у перла много тонкостей при работе с переменными и вообще,
>>>переменную типа "my" можно скажем сделать статичной (чтобы сохранялосья значение между
>>>вызовами блока в котором она определена), так же у перла вроде
>>>есть щняга типа "сборшик мусора" которая вычищает неиспользуемые переменные
>>>
>>
>>Можно... например из того что в перл не существует вложенных функций?
>
>чево? ты про inline функции на Си?

я про то что переменная определенная во внешней функции как my во внутренней функции определяется только один раз вне зависимости от того сколько раз была вызвана внешняя функция.
ну типа того:

our $i = 0;

sub a($){
my $var = shift;
local $i = $var;
sub b{
  print $var," - $i \n";
}
&b;
}

a(1);
a(2);
a(3);

#=========РЕЗУЛЬТАТ:
1 - 1
1 - 2
1 - 3


p.s. кстати именно из этого случая - я стал рыться с адресами переменных чтобы понять что к чему... а в итоге все оказалось просто: my - имеет лексическую область видимости, в то время как настоящих вложенных функций в  perl нет, получается что &b - это внешняя функция, но во время "компиляции" в ней создается ячейка памяти с адресом (совпадающим с адресом переменной во внешней функции - а этот адрес заполняется только один раз, потому и получается что внутри вложенной функции остается одно и то же первоопределенное значение.)

А вот на фоне этого - мне и стало интересно как на более низком уровне реализованы my local (и bless)

>ну с твоим подходом это скорей извращение )))

я это называю любопытством ;)

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру