Следует помнить, что элементу со строковым индексом 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 -
Неактивен
при разработке функций с параметрами по умолчанию, т.е. которые указывать не нужно.
Что это значит?
Подобную особенность работы QSP с массивами следует учитывать
"Подобная особенность" никоим образом не влияет на разработку, если автор делает использует язык по назначению.
То есть, определив для себя массив, в который он будет обращаться по строкам(a['tag']), он обязан придерживаться этого, и обращаться в любой момент исключительно по строкам, а не по "числовому индексу". Иначе он сам себе прострелит ногу, и поделом ему.
Неактивен