Haxe (Flash) и встраивание - PullRequest
       25

Haxe (Flash) и встраивание

4 голосов
/ 15 марта 2012

Мой вопрос касается встраивания в Haxe (AS3) в нескольких ситуациях.

  1. Будут ли какие-либо методы, помеченные ключевым словом inline (статические и нестатические), всегда , вставлены во время компиляции?
  2. По умолчанию свойства встроены??Если нет, есть ли способ включить их?(Возможно, назначив им встроенные методы доступа)
  3. Если встроенные методы исчезают во время компиляции, как получается, что из них можно извлечь функторы?

1 Ответ

4 голосов
/ 15 марта 2012

смотрели ли вы встроенный документ на haxe.org?

1. (в документе) есть некоторые ограничения для встроенных функций. Кроме того, вы не можете встроить рекурсивную функцию. Я верю, что все методы, помеченные как inline, будут встроены (потому что в вашем hxml-файле нет опций --no-inline), если какой-либо метод с маркером inline не может быть встроен, во время компиляции будет выдана ошибка. 1007 *

2.Нет, нет. Вы можете встроить только статические переменные, в противном случае вы получите ошибку компиляции (Inline variable must be static). Обратите внимание, что встроенный var, очевидно, не может быть изменен, поэтому нет никаких причин для встроенного нестатического var. Если вы в строке geter или seter:

private var v: Bool;

public inline function getv(nv: Bool) {
    return v;
}

будет трактоваться как:

private var v: Bool;

public inline function getv(nv: Bool) {
    return this.v;
}

после встраивания this будет изменено со ссылкой на класс. Взгляните на пример . Ни одно из StopWatched свойств класса там не встроено.

  1. Я не уверен, что понимаю, что такое функтор.
...