November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Friday, February 19th, 2010 12:09 pm

наглядный пример: жуткий глюк с областями видимости

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

Friday, February 19th, 2010 11:46 am (UTC)
например в перле:

{
my $a=1;
print("1. a=$a\n");
{
my $a=2;
print("2. a=$a\n");
}
print("3. a=$a\n");
}
print("4. a=$a\n");

вывод:
1. a=1
2. a=2
3. a=1
4. a=

такого поведения автор и ожидал, как я понимаю.
Friday, February 19th, 2010 11:48 am (UTC)
угу, это если явно объявлять в каждом блоке my $a.
а если не объявлять, то он будет себя вести точно так же, как php - будет одна общая переменная.
Friday, February 19th, 2010 11:53 am (UTC)
ну нельзя в php явно объявить переменную, да :(
Friday, February 19th, 2010 11:55 am (UTC)
и потому авторы языка поступили логично: сделали отдельную область видимости только для одного типа блоков: для функций.
Friday, February 19th, 2010 12:01 pm (UTC)
логично, согласен.
Friday, February 19th, 2010 11:50 am (UTC)
это я к тому, что новая область видимости срабатывает не для _всех_ переменных, а только для тех, которые были явно объявлены внутри блока