LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

Они сделали удобно и дали программисту выбор.

да? а как мне тогда удобно сделать выбор «локальная переменная, видимая только в теле цикла»?

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

#!/usr/bin/perl -W

$i=99;

print "a: i=$i\n";

for(my $i=0; $i<3; ++$i) {
  print "b: i=$i\n";
}

print "c: i=$i\n";

for(local $i=0; $i<3; ++$i) {
  print "d: i=$i\n";
}

print "e: i=$i\n";

$ ./perl-my.pl 
a: i=99
b: i=0
b: i=1
b: i=2
c: i=99
d: i=0
d: i=1
d: i=2
e: i=3
$ 

А предложи другую семантику.

так очевидно же — переменная определена только внутри цикла, а чтобы выдать ее наружу, испосльзовать спец. средства, скажем finally, аналогичное тому else, что есть в питоне (к слову, else тоже говно)

for i in range(1, 100500):
  if very_bad(i):
    break
  sum+=i
finally:
  print "sum=", sum, " up to i=", i

Исправление www_linux_org_ru, :

Они сделали удобно и дали программисту выбор.

да? а как мне тогда удобно сделать выбор «локальная переменная, видимая только в теле цикла»?

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

#!/usr/bin/perl -W

$i=99;

print "a: i=$i\n";

for(my $i=0; $i<3; ++$i) {
  print "b: i=$i\n";
}

print "c: i=$i\n";

for(local $i=0; $i<3; ++$i) {
  print "d: i=$i\n";
}

print "e: i=$i\n";

$ ./perl-my.pl 
a: i=99
b: i=0
b: i=1
b: i=2
c: i=99
d: i=0
d: i=1
d: i=2
e: i=3
$ 

А предложи другую семантику.

так очевидно же — переменная определена только внутри цикла, а чтобы выдать ее наружу, испосльзовать спец. средства, скажем finally, аналогичное тому else, что есть в питоне (к слову, else тоже говно)

for i in range(1, 100500):
  sum+=i
  if very_bad(i):
    break
finally:
  print "sum=", sum, " up to i=", i

Исходная версия www_linux_org_ru, :

Они сделали удобно и дали программисту выбор.

да? а как мне тогда удобно сделать выбор «локальная переменная, видимая только в теле цикла»?

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

#!/usr/bin/perl -W

$i=99;

print "a: i=$i\n";

for(my $i=0; $i<3; ++$i) {
  print "b: i=$i\n";
}

print "c: i=$i\n";

for(local $i=0; $i<3; ++$i) {
  print "d: i=$i\n";
}

print "e: i=$i\n";

$ ./perl-my.pl 
a: i=99
b: i=0
b: i=1
b: i=2
c: i=99
d: i=0
d: i=1
d: i=2
e: i=3
$ 

А предложи другую семантику.

так очевидно же — переменная определена только внутри цикла, а чтобы выдать ее наружу, испосльзовать спец. средства, скажем finally, аналогичное тому else, что есть в питоне (к слову, else тоже говно)

for i in range(1, 100500):
  sum+=i
  if very_bad(i)
    break
finally:
  print "sum=", sum, " up to i=", i