Передача параметров

General Injection issues

Moderators: Murderator+, Murderator

Post Reply
ruso
Posts: 45
Joined: 2004-04-26 00:36:26

Передача параметров

Post by ruso »

Вобщем такай скриптик:

Code: Select all

sub test()
   var x = 0
   var y = 0
   while not (x == 3)
      x = x + 1
      y = y + 1
      uo.print(str(x) + str(y))
      mySubA(x, y)
   wend
end sub

sub mySubA(x, y)
   x = x + 1
   y = y + 1
   uo.print(str(x) + str(y))
   mySubB(x, y)
end sub

sub mySubB(x, y)
   x = x + 1
   y = y + 1
   uo.print(str(x) + str(y))
end sub


Выдаёт такой результат:

11
22
33
22
33
44
33
44
55

Получается что эти переменные в каждой процедуре локальные, и не изменяют переменные X, Y в процедуре тест ?

Так и должно быть ?

Значит мне надо использовать глобальные переменные что бы изменить значение переменной в под-процедуре ?
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

почему такой мутный тестовый пример??
неужели такого тебе было не достаточно?

Code: Select all

sub main()
 var x=10
  myproc(x)
 uo.print(x)
end sub

sub myproc(x)
 x=777
end sub


Если ты откроешь документацию по любому языку программирования, особенно по Бейсику с которого дрался синтакс скриптового модуля, то узнаешь о том что при передаче параметров без посредства указателей или специальной нотации функциям передаются КОПИИ параметров.
Это связано например с тем что если бы было иначе и ты вызвал бы myproc(1+2) то возникла бы критичесеская ошибка.

Я не читал всю инструкцию от автора скриптового модуля, если есть время скачай и прочти. Но передачи по указателю и т.п. и даже глобальных переменных я там не видел, поэтому и сделал сначала Get/[yhlp_SetEasyUO] потом Get/[yhlp_SetGlobal].
ruso
Posts: 45
Joined: 2004-04-26 00:36:26

Post by ruso »

Пример такой дал потому что у меня в другом скрипте немного схожая тема.

Раз передаются только копии переменных, значить сделаю немного по другому. :)
Post Reply