LINUX.ORG.RU

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

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

правда куда он сует старое значение, чтобы его вернуть при выходе из самого глубого scope, где есть локальная переменная с таким же названием, как локальнач переменная выше?

Никуда не суёт, в том то и суть.

if expr1; then
 local tmp=XXX
 expr_with_tmp
fi
# другой код, много
if expr2; then
 local tmp=XXX
 expr_with_tmp
fi
Вот в этом коде понятное дело, что могут выполниться либо первый либо второй либо оба if-а (ни одного — не интересно и опустим). Переменная объявится или в одном месте или в двух. Но ничего страшного в этом нет. Если убрать local во втором месте, то, если первый if не сработает, tmp перекроет глобальный tmp, что — плохо. Так понятнее? В этом и было изначальное возражение, что local несколько раз на одну переменную в if-ах бывает нужен.

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

правда куда он сует старое значение, чтобы его вернуть при выходе из самого глубого scope, где есть локальная переменная с таким же названием, как локальнач переменная выше?

Никуда не суёт, в том то и суть.

if expr1; then
 local tmp=XXX
 expr_with_tmp
fi
# другой код, много
if expr2; then
 local tmp=XXX
 expr_with_tmp
fi
Вот в этом коде понятное дело, что могут выполниться либо первый либо второй либо оба if-а. Переменная объявится или в одном месте или в двух. Но ничего страшного в этом нет. Если убрать local во втором месте, то, если первый if не сработает, tmp перекроет глобальный tmp, что — плохо. Так понятнее? В этом и было изначальное возражение, что local несколько раз на одну переменную в if-ах бывает нужен.

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

правда куда он сует старое значение, чтобы его вернуть при выходе из самого глубого scope, где есть локальная переменная с таким же названием, как локальнач переменная выше?

Никуда не суёт, в том то и суть.

if expr1; then
 local tmp=XXX
 expr_with_tmp
fi
# другой код, много
if expr2; then
 local tmp=XXX
 expr_with_tmp
fi
Вот в этом коде понятное дело, что могут выполниться либо первый либо второй либо оба if-а. Переменная объявится или в одном месте или в двух. Но ничего страшного в этом нет. Если убрать local во втором месте, то если первый if не сработает, то tmp перекроет глобальный tmp, что — плохо. Так понятнее? В этом и было изначальное возражение, что local несколько раз на одну переменную в if-ах бывает нужен.

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

правда куда он сует старое значение, чтобы его вернуть при выходе из самого глубого scope, где есть локальная переменная с таким же названием, как локальнач переменная выше?

Никуда не суёт, в том то и суть.

if expr1; then
 local tmp=XXX
 expr_with_tmp
fi
# другой код, много
if expr2; then
 local tmp=XXX
 expr_with_tmp
fi
Вот в этом коде понятное дело, что могут выполниться либо первый либо второй либо оба if-а. Переменная объявится или в одном месте или в двух. Но ничего страшного в этом нет. Если убрать local во втором месте, то если первый if не сработает, то tmp перекроет глобальный tmp, что — плохо. Так понятнее?

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

правда куда он сует старое значение, чтобы его вернуть при выходе из самого глубого scope, где есть локальная переменная с таким же названием, как локальнач переменная выше?

Никуда не суёт, в том то и суть.

if expr1; then
 local tmp=XXX
 expr_with_tmp
fi
# другой код, много
if expr2; then
 local tmp=XXX
 expr_with_tmp
fi
Вот в этом коде понятное дело, что могут выполниться либо первый либо второй либо оба if-а. Переменная объявится или в одном месте или в двух. Но ничего страшного в этом нет. Если убрать local во втором месте, то если первый if не сработает, то tmp перекроет глобальный tmp. Так понятнее?

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

правда куда он сует старое значение, чтобы его вернуть при выходе из самого глубого scope, где есть локальная переменная с таким же названием, как локальнач переменная выше?

Никуда не суёт, в том то и суть.

if expr1; then
 local tmp=XXX
 expr_with_tmp
fi
# другой код, много
if expr2; then
 local tmp=XXX
 expr_with_tmp
fi
Вот в этом коде понятное дело, что могут выполниться либо первый либо второй либо оба if-а. Переменная объявится или в одном месте или в двух. Но ничего страшного в этом нет. Так понятнее?