Параметры типов перечислений

Перечисления, как и классы, также могут иметь параметры типов. Синтаксис такой же. Вот небольшой пример параметризованного класса связанного списка (List), использующего enum для хранения ячеек.

    enum Cell<T> {
        empty;
        cons( item : T, next : Cell<T> );
    }

    class List<T> {
        var head : Cell<T>;

        public function new() {
            head = empty;
        }

        public function add( item : T ) {
            head = cons(item,head);
        }

        public function length() : Int {
            return cell_length(head);
        }

        private function cell_length( c : Cell<T> ) : Int {
            return switch( c ) {
            case empty : 0;
            case cons(item,next): 1 + cell_length(next);
            }
        }

    }
</div>

Использование в haXe перечислений и классов вместе, может быть очень мощным средством в некоторых случаях.