Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - dha

Pages: [1]
1
СLICKERMANN вер  4.12.001
OC Windows 8.1

Совпадение имен переменных используемые в подпрограммах, как входные, так и локальные приводят к перезатиранию внешних переменных.
т.е. для корректной работы, подпрограммы не должны использовать одинаковые имена входных параметров, а так же имена переменных используемых до или после во всём скрипте.

"Локальные переменные подпрограммы (параметры) при этом будут уничтожены.", а так же будут зачищены все глобальные/внешние переменные у которых имена совпали с именами входных параметров, что как то не очень очевидно.

Code: [Select]
// Некоторая подпрограмма
sub(test, $id)
print("in test id:", $id)
$x = 10
print("in x:", $x)
end_sub

// Ещё одна
sub(test2, $id)
test($id)
print("in test2 id:", $id)
// Ожидаем, что выведем id, который пришел на вход но будет всегда 0
end_sub

// Объявляем переменные
$id = 1
$x = 2

print("out id before: ", $id)
print("out x before: ", $x)

// Вызываем подпрограммы
test(1)
test2(2)

// Ожидаем что id=1, а x=2
print("out id after: ", $id)
print("out x after:", $x)
// Но id=0, а x=10

Pages: [1]