Germany | Finland | Saint Petersburg | Drive

Inc_Value()

Опубликовано в QPILE

Служебная функция, написанная скорее из эстетических чувств. get_value() есть, set_value() тоже. Часто полем ассоциативного массива являются какие-либо счетчики. Приходится сначала получать из массива значение, увеличивать его, потом записывать назад. Текст портфеля распухает. Для уменьшения количества кликов по клавиатуре сохранил эту функцию.

' Увеличение значения ассоциативного массива на требуемую величину
FUNC Inc_Value(result,av_key,av_value)
      result = set_value(result,av_key,get_value(result,av_key) + av_value)
END FUNC

Чтобы не генерировать вызов функции (и новые переменные, количество которых в QPILE ограничено), можно воспользоваться inline-вариантом для макропроцессора M4:

define(`Inc_Value',`set_value($1,$2,get_value($1,$2) + ifelse($3,,1,$3))')

Приятные мелочи - если использовать поле ассоциативного массива в качестве счетчика, инициализировать его нулем не нужно - оно изначально ему равно. Плюс к тому в варианте с использованием M4 последний параметр указывать необязательно. Если он пропущен, то по умолчанию равен 1.

Добавить комментарий