Skip to content

Подстановки

Объекты, чьё имя начинается на символ '$' тоже считаются системными объектами, но работают они по-другому.

Если в выводе текста встречается "ссылка" вида:

lua
{$my a b c|текст}

То происходит следующее:

  1. Берётся объект $my;
  2. Берётся act объекта $my;
  3. Вызывается act: _'$my':(a, b, c, текст);
  4. Возвращаемая строка заменяет собой всю конструкцию {...}.

Таким образом, объекты играют роль подстановки.

Зачем это нужно? Представьте себе, что вы разработали модуль, который превращает записи формул из текстового вида в графические. Вы пишете объект $math который в своём act методе превращает текст в графическое изображение (спрайт) и возвращает его в текстовый поток. Тогда пользоваться таким модулем крайне просто, например:

lua
	{$math|(2+3*x)/y^2}