Gor
Участник форума
- Регистрация
- 26 Дек 2009
- Сообщения
- 977
- Благодарности
- 546
- Баллы
- 245
Перевод: Локальные переменные в функциях обрабатываются как глобальные переменные и сохраняют свое значение при выходе из функции. Таким образом, они не генерируются временно, а затем удаляется, как в случае с C ++
Например, для текстаА как же тогда локальные переменные при выполнении функций распорядков? Один и тот-же распорядок могут выполнять ОДНОВРЕМЕННО десятки неписей, и у каждого непися будет своё значение какой-нибудь переменной random. Впрочем, движок может, и наверняка так и делает, выполнять функции ИИ разных неписей по очереди, поэтому одноимённые переменные не пересекаются.
С другой стороны, коипилятор будет ругаться, если в функции не объявить используемую в ней локальную переменную, даже если такая-же переменная объявлена уже с десяток раз в других функциях. Так что не всё тут так однозначно.
Код:
var int testvar;
func void f1() {var int testvar;};
func void f2() {var int testvar;};
Код:
testvar
f1.testvar
f2.testvar
Собственно, как правило, одно и тоже на разных уровнях абстракции выглядит и работает по разному, поэтому лучше оставаться на своем уровне, для удобства. К примеру, инстанция в скриптах это нечто вроде объекта, а на уровне байт-кода это функция-конструктор.
Последнее редактирование: