Начиная с haXe 1.17, в язык добавлено новое ключевое слово inline. Оно может использоваться в двух случаях: для статических переменных и для любых методов.
===== Статические Inline переменные =====
Для статических переменных всё довольно просто. Каждый раз, когда переменная используется, берётся само её значение вместо доступа к переменной. Например:
Использование "inline" накладывает пару ограничений:
* переменная должна быть инициализирована при объявлении (получить значение)
* переменная не может быть изменена
(можно сказать, что "inline" переменные в haXe это аналог констант в других языках)
Главное преимущество в использовании "inline" состоит в том, что вы можете использовать столько переменных, сколько вам нужно, без замедления кода временем доступа к этим переменным, поскольку их значение подставляется напрямую в скомпилированном / сгенерированном коде.
===== Инлайн методы =====
Для методов принцип тот же. Наименее ресурсоёмкий вызов функции - тот, который никогда не производится. Для достижения этого в маленьких методах, которые часто вызываются, вы можете добавить ключевое слово "inline" в месте объявления функции.
Давайте посмотрим на пример:
Опять же, есть некоторые ограничения для "inline" функций:
* они не могут быть переопределены во время выполнения
* они не могут быть переопределены (override) в подклассах
* функция содержащая обращения к "super" или определяющая другую функцию не может быть "inline"
* если у "inline" функции есть аргументы, то порядок обработки аргументов не определён и некоторые аргументы могут быть вообще не обработаны, что хорошо, если только они не имеют каких-либо побочных эффектов
* если "inline" аргументы модифицируются в "inline" функции, то они в результате могут быть модифицированы и в оригинальной функции, например:
* если inline возвращает значение, то только "финальные выражения return" принимаются, например:
Помимо этих нескольких ограничений, использование inline увеличивает размер компилированного / генерированного кода, но даёт большой прирос скорости исполнения маленьких методов.
Пожалуйста отметьте, что также возможно объявлять с ключевым словом inline и статические методы.