Forum.iFiction.Ru

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

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

Вы не зашли.

  • Список
  •  » Quest Soft Player
  •  » FAQ: Массивы и аргументы функций, задаваемые по умолчанию

0    0    #1
07.11.2010 10:35

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

Массивы и аргументы функций, задаваемые по умолчанию

Следует помнить, что элементу со строковым индексом QSP автоматически присваивает первый свободный числовой индекс. Т.е. если у нас уже заполнены элементы 0, 1 , 2, то присваивание значения элементу Массив['опа'], автоматически создаст элемент с индексом 3, т.е. Массив[3]. Подобную особенность работы QSP с массивами следует учитывать при разработке функций с параметрами по умолчанию, т.е. которые указывать не нужно.

Код:

#СравнитьСтроку
  $ARGS['с_чем_сравниваем']='123'
  !----------
  if $ARGS[0]=$ARGS['с_чем_сравниваем']:
    *NL 'строки совпадают!'
  else
    *NL 'строки различаются!'
  end
-

Вызов данного кода без указания параметра, т.е. GS 'СравнитьСтроку', выведет на экран "строки совпадают!", поскольку в первой же строке функции QSP (поскольку параметр функции не указан) создаст переменную $ARGS[0]. Вызов функции с указанием всех параметров поможет в этой ситуации (GS 'СравнитьСтроку',''), но лучше подстраховаться и первым делом определить в самой функции всем нужным параметрам значения по умолчанию.

Код:

#СравнитьСтроку
  if ARRSIZE('ARGS')<1: $ARGS[0]=''
  !----------
  $ARGS['с_чем_сравниваем']='123'
  !----------
  if $ARGS[0]=$ARGS['с_чем_сравниваем']:
    *NL 'строки совпадают!'
  else
    *NL 'строки различаются!'
  end
-

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru