Статическая область видимости и переименование локальных переменных
Для нашего примера следует изменить имя локальной переменной в процедуре D( ):
procedure D;
var r : char; begin
r := 'D';
W;
end;
Логика вычислений не меняется, а источник конфликта устранен.
ПРИМЕЧАНИЕ --------------------------------------------------------------------------------------------------
Конечно, это применимо, если не противоречит замыслу программиста. Мы полагаем, что совпадение имен носит случайный характер и программист не намеревался выводить значение локальной переменной из процедуры D( ) с помощью сторонней процедуры W( ). В противном случае надо переделывать процедуру W( ).
Принцип переименования локальных переменных гласит: каждое имя в программе должно иметь только одно объявление. |