В Haxe, как вы реализуете операторы массива для класса? - PullRequest
0 голосов
/ 28 июля 2011

Я пытаюсь написать класс в Haxe, поддерживающий массив, такой как доступ, используя оператор [], такой как:

var vector = new Vec3();
trace(vector.length); // displays 3
vector[0] = 1; // array like access to the class, how?
vector[1] = 5.6; // more array access
vector[2] = Math.PI; // yet more array access

Проблема в том, что я не знаю, как определить класс таким образом, чтобы онпозволяет оператор [].Мне нужен этот класс вместо использования Array<Float> или List<Float>, потому что с ним происходит некоторая хитрость для поддержки моей системы анимации, которая ссылается на части векторов, используя раскадровки (см. http://www.youtube.com/watch?v=ijF50rRbRZI)

ВC # я мог бы написать:

public float this[index] { get { ... } set { .... } }

Я прочитал документацию Haxe и нашел ArrayAccess<T>, но интерфейс пуст. То есть я не понимаю, как реализовать этоили если я просто реализую ArrayAccess<Float> ... какой метод в моем классе будет вызван для получения Float по указанному index ?

1 Ответ

2 голосов
/ 28 июля 2011

Haxe не поддерживает перегрузку операторов (пока), поэтому вам придется использовать пару get / set. Вы можете использовать inline, если магия, которая происходит внутри ваших методов, должна быть оптимизирована для скорости.

...