Перейти к основному содержимому

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