История изменений
Исправление 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