Подстановки
Объекты, чьё имя начинается на символ '$' тоже считаются системными объектами, но работают они по-другому.
Если в выводе текста встречается "ссылка" вида:
lua
{$my a b c|текст}То происходит следующее:
- Берётся объект $my;
- Берётся act объекта $my;
- Вызывается act: _'$my':(a, b, c, текст);
- Возвращаемая строка заменяет собой всю конструкцию {...}.
Таким образом, объекты играют роль подстановки.
Зачем это нужно? Представьте себе, что вы разработали модуль, который превращает записи формул из текстового вида в графические. Вы пишете объект $math который в своём act методе превращает текст в графическое изображение (спрайт) и возвращает его в текстовый поток. Тогда пользоваться таким модулем крайне просто, например:
lua
{$math|(2+3*x)/y^2}