Инструменты пользователя

Инструменты сайта

Writing /var/www/qsp.su/public_html/wiki/data/meta/access.log failed

Боковая панель

help:dynamical

Назад: Служебные локации

Динамический код

  • DYNAMIC [$код],[параметр 1],[параметр 2], … - выполняет код, указанный в виде строки текста. Выполнение кода [$код] здесь аналогично оператору GS.
    • Переданные параметры хранятся в массиве ARGS. Максимальное количество параметров - 91).
    • После выполнения старые параметры ARGS восстанавливаются.
    • Затем продолжение выполнения программы со следующей команды после DYNAMIC.
    • Примеры:
      DYNAMIC '$a="string<<$b>>"'
      DYNAMIC '$a'
      DYNAMIC 'if $a="string":''text!'''
      DYNAMIC "
      $args[0]
      addobj $args[1]
      ",'Текст','Вилка'
      
  • DYNEVAL([$код],[параметр 1],[параметр 2], …) - выполняет код, указанный в виде строки текста, с получением результата. Выполнение кода [$код] здесь аналогично оператору FUNC.
    • Переданные параметры хранятся в массиве ARGS. Максимальное количество параметров - 92).
    • Результат функции равен значению $RESULT при возврате строкового значения или RESULT при возврате числового значения.
    • Если при обработке локации были установлены и RESULT, и $RESULT, то предпочтение отдаётся строковому значению.
    • После обработки локации предыдущие значения ARGS и RESULT восстанавливаются.
    • Внимание: при использовании в коде [$код] операторов GS/DYNAMIC переменные RESULT и $RESULT могут перезаписываться кодом, выполняемым этими операторами.
      • Исправлено в более новых версиях интерпретатора.
    • Примеры:
      DYNEVAL('result = 3+4')
      PL DYNEVAL('$result = mid("abcd",2,1)+"qwerty"')
      PL DYNEVAL($test + ' + val("<<$test>>")')
      проход=DYNEVAL("result = ($args[0] <> 'текст')", 'строка')
      
  • Важно: если код задан с помощью одинарных (' ') или двойных (" ") кавычек, в тексте вычисляются подвыражения.
    • Пример:
      $args[0]='qwerty'
      $code = '
      *pl "<<$args[0]>>"
      *pl $args[0]'
      $args[0]='12345'
      
      DYNAMIC $code,'asdfg'
      ! при задании переменной $code будет вычислено подвыражение
      ! поэтому первой строкой выведется 'qwerty'
      ! второй строкой выведется 'asdfg'
      
  • Фигурные скобки - третий вид кавычек используемый специально для написания динамического кода
    • Поддерживается вложенность скобок
    • Перед выполнением кода не вычисляются подвыражения.
    • Примеры:
      $args[0]='qwerty'
      $code = {
        *pl "<<$args[0]>>"
        *pl $args[0]
      }
      
      DYNAMIC $code,'asdfg'
      ! будет выведено две строки 'asdfg'
      

Вперёд: Основное окно описания

1) , 2) 10 включая код
help/dynamical.txt · Последние изменения: 2013/11/23 00:26 (внешнее изменение)