локальные переменные -- что не так

Форум пользователей пакета Maple

Модератор: Admin

Полищук Андрей
Сообщения: 55
Зарегистрирован: Чт ноя 09, 2006 2:40 pm
Откуда: Ижевск

локальные переменные -- что не так

Сообщение Полищук Андрей » Пн дек 04, 2006 1:43 pm

Вот:

> eq1:= x+y=0 ;
eq1 := x + 1 = 0
> whattype(eq1);
=
> pr:= proc(eq :: `=`,b)
> local y;
> y:= b;
> solve(eq, x);
> end proc;
pr := proc(eq::`=`, b) local y; y := b; solve(eq, x) end proc
> pr(eq1,1);
-1
> y;
1
> eq1;
x + 1 = 0

Вопрос, что я сделал не так.
'y' объявлена как локальная внутри процедуры, там ей присвоено значение.
Почему изменено значение глобальной переменной?

Irmantas
Сообщения: 589
Зарегистрирован: Ср апр 27, 2005 8:49 pm
Откуда: Литва, Каунас

Re: локальные переменные -- что не так

Сообщение Irmantas » Пн дек 04, 2006 8:34 pm

Патаму что до этого у мас "у" имеет значение 1.
Это паказывает
Полищук Андрей писал(а):> eq1:= x+y=0 ;
eq1 := x + 1 = 0

Чтобы так неслучилось перед этим вставте
y:='y':

Полищук Андрей
Сообщения: 55
Зарегистрирован: Чт ноя 09, 2006 2:40 pm
Откуда: Ижевск

Re: локальные переменные -- что не так

Сообщение Полищук Андрей » Вт дек 05, 2006 11:51 am

Спасибо. А то стала всякая чертовщина в голову лезть.

xyz
Сообщения: 202
Зарегистрирован: Чт мар 24, 2005 3:42 pm

Сообщение xyz » Вт дек 05, 2006 5:18 pm

See attach-document.