Эмуляция типа enum

Java сильно влияет на ActionScript разработчиков. Сегодня я попробую эмулировать тип данных enum из Java.

Например вот так:

package {

	public class Fruit {

		public static const Apple:Fruit=new Fruit(0);
		public static const Pear:Fruit=new Fruit(1);
		public static const Peach:Fruit=new Fruit(2);

		private var _value:int;

		public function Fruit(value:int) {
			_value=value;
		}

		public function get value():int {
			return _value;
		}
	}
}

этот вариант «более правильный и изящный с точки зрения архитектуры», однако я почему то предпочитаю вариант попроще -«некрасиво и убого, не нужно так писать»:

package {

	public class Vegetable {
		public static const Tomato:int=0;
		public static const Onions:int=1;
		public static const Cucumber:int=2;
	}
}

К тому-же он работает в два с лишним раза быстрее. Но придется все таки изучать правильные и архитектурно изящные варианты. От этого зависит буду я хорошим программистом или говнокодером...

Вливайтесь в общение

7 комментариев

  1. И в чём в вашем варианте изящество?

  2. @Valentin
    Ну… мне сказали что именно так должен выглядеть enum в AS3 для совместимости с Java, и именно на такой стиль нужно ориентироваться.

    Да, и в таком случае нельзя будет сравнивать Fruit с Vegetable, что может быть полезно

  3. Если уж эмулировать, то наверное больше вот на это должно быть похоже:

    package {
    
    	public class Fruit {
    		public static const Apple:Fruit=new Fruit();
    		public static const Pear:Fruit=new Fruit();
    		public static const Peach:Fruit=new Fruit();
    
    		private static var _n:int = 0;
    		private var _value:int;
    
    		public function Fruit() {
    			_value=_n++;
    		}
    
    		public function get value():int {
    			return _value;
    		}
    	}
    }

  4. @elmortem
    Это автосгенерированный класс, поэтому лучше изначальный вариант(-1 int на enum)

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *