Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

5.3. Почему в `args[]` на локации-обработчике перехода на новую локацию уже есть данные?

В: Почему в `args[]` на локации-обработчике перехода на новую локацию уже есть данные?

О:

Таково устройство QSP. Если Вы передаёте аргументы при переходе на локацию с помощью оператора `goto`, `xgoto`, значения этих аргументов становятся доступны не только на текущей локации, на которую Вы перешли, но и на локации-обработчике перехода на новую локацию.

Пример такой работы:

# начало
$onnewloc="onNewLoc"
act "В комнату":
    GOTO "комната","Мы не ожидали, что ходить придётся так много."
end
--- начало ---------------------------------


# комната

"Мы вошли в комнату."
--- комната ---------------------------------


# onNewLoc

*pl $args[0]
--- onNewLoc ---------------------------------

Однако, обратите внимание: хотя на локацию, на которую был совершён переход, и на локацию-обработчик перехода на новую локацию передаются одинаковые данные, на обеих локациях с ними можно работать совершенно произвольно. То есть изменение `args[0]` на локации "комната" не отразится на значении `args[0]` в локации "onNewLoc" и туда всё равно будет передано исходное значение аргумента.

Пример такого поведения:

# начало
$onnewloc="onNewLoc"
act "В комнату":
    GOTO "комната","Мы не ожидали, что ходить придётся так много."
end
--- начало ---------------------------------


# комната

"Мы вошли в комнату."
$args[0]="Мы изменили значение args[0]."
--- комната ---------------------------------


# onNewLoc

*pl $args[0]
--- onNewLoc ---------------------------------