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.
Участник (+1053, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2879
Вебсайт

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

Следует помнить, что элементу со строковым индексом 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
-

Неактивен

0    0    #2
07.11.2010 15:25

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2053

---

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

при разработке функций с параметрами по умолчанию, т.е. которые указывать не нужно.

Что это значит?

Подобную особенность работы QSP с массивами следует учитывать

"Подобная особенность" никоим образом не влияет на разработку, если автор делает использует язык по назначению.
То есть, определив для себя массив, в который он будет обращаться по строкам(a['tag']), он обязан придерживаться этого, и обращаться в любой момент исключительно по строкам, а не по "числовому индексу". Иначе он сам себе прострелит ногу, и поделом ему.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru