Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

  • Список
  •  » Quest Soft Player
  •  » FAQ: Как отличить, вызвана ли локация как функция или как процедура?

0    0    #1
30.08.2012 09:30

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Как отличить, вызвана ли локация как функция или как процедура?

Начну с примера, чтобы снять часть вопросов "а зачем всё это?" У меня есть локация (в терминах QSP) "Описание". И у неё есть два назначения:

  1. Установить параметры описания для какого-нибудь объекта.
  2. Получить параметры описания для какого-нибудь объекта.

В первом случае я её вызываю через GS 'Описание', …, во втором — через func('Описание', …).

Различие функционала производилось по количеству и составу параметров, но это хлопотно и не всегда надёжно. Поэтому хотелось бы иметь возможность чётко различать, когда локация вызвана как процедура, а когда — как функция. И небольшой эксперимент, кажется, позволил нащупать такую возможность.

Если локация вызывается через GS, GT или XGT, то arrsize('Result') внутри локации возвращает 1.
Если локация вызывается через func, то arrsize('Result') внутри локации возвращает 0.

Платформа: QSP 5.7.0 Classic

Неактивен

0    0    #2
30.08.2012 09:59

Olegus t.Gl.
Участник (+1039, -248)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2851
Вебсайт

Re: Как отличить, вызвана ли локация как функция или как процедура?

Увы, но, оказывается, это не фича, а баг. В следующих версиях будет исправлено, так что полагаться на это с расчётом на будущее нельзя.

Неактивен

  • Список
  •  » Quest Soft Player
  •  » Как отличить, вызвана ли локация как функция или как процедура?

Powered by PunBB
© copyright 2001–2021 iFiction.Ru