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 -------------------------------