Обсуждение:Реализация StringTemplate на RSL. Альтернатива конкатенации строк.

0 (0)
  • Развернуть Обсуждение:Реализация StringTemplate на RSL. Альтернатива конкатенации строк. ( Обсуждение примера  23.10.2018 14:39 )
    5(1)
    Реализация StringTemplate на RSL. Альтернатива конкатенации строк.

    Функции:

    Macro StrTmpl(str : String) : String - Возвращает сгенерированную строку из шаблона 'str'.
    Macro PrintlnT(str) - Передает в выходной поток сгенерированную строку из шаблона 'str' с переносом строки.
    Macro PrintT(str) - Передает в выходной поток сгенерированную строку из шаблона 'str' без переноса строки.

    Как использовать:

    Для передачи выражения expr необходимо заключить его в '$[expr]';
    expr может быть
    - глобальной переменной,
    - ссылкой на объект с реализованным методом toString,
    - любым выражением на языке RSL, доступным в глобальном контексте, за исключением символов [](т.е к эл-ам массива следует обращаться через () );
    Также возможно применять спецификаторы форматирования внутри скобок.

    Для использования функции внутри макрофункции, есть возможность использовать принудительно-глобальные переменные (пгп)
    при этом, если необходимо передать в шаблон одиночную пгп, можно не ограничивать её $[]. Однако при необходимости использовать функцию необходимо заключить его в $[] при этом пгп обозначать внутри {}.


    Пример использования:

    var acc = "40817840000000001234";
    var client = "Иванов Иван Иванович";
    var sum = $100523.23;
    var rate = 65.59;
    var tmpl = StrTmpl("Остаток на счёте в р.э. $[acc] ($[client]) = $[sum*rate:a:0:2]");
    Println(tmpl);
    // Остаток на счёте в р.э. 40817840000000001234 (Иванов Иван Иванович) = 659'331'865.57

    Пример с использованием пгп:

    Macro pgp()
    var {i} = 0;
    for({i}, 1, 5)
    PrintlnT("Строка {i} к Вашим услугам.");
    end;
    End;
    pgp();
    // Выведет 5 нумерованных строк.

    Посмотреть пример
    >> Ответить