Следует отметить, что хотя принятый ответ верен, он также очень медленный.Не то, что вы хотите сделать много.Есть три более простых решения.
Один: Проверьте само значение:
public function set type(value:String):void
{
if( value != ObjectType.ONE && value != ObjectType.TWO && value != ObjectType.THREE )
return;
}
Очевидно, что чем больше у вас констант, тем сложнее проверить.
Два: Используйте в качестве констант целые числа
Измените класс ObjectType на использование целых чисел:
public class ObjectType
{
public static var NONE:int = 0;
public static var ONE:int = 1;
public static var TWO:int = 2;
public static var THREE:int = 3;
public static var TOTAL:int = 4;
}
Обратите внимание на NONE
и TOTAL
втам?Это позволяет легко проверить, находится ли ваше значение в правильном диапазоне:
public function set type(value:int):void
{
if( value <= ObjectType.NONE || value >= ObjectType.TOTAL )
return;
}
Вы можете добавить дополнительные значения по мере необходимости, вам просто нужно обновить TOTAL
, и оно все равно будет работать.Это требует, чтобы каждое значение было по порядку.
Three: Использовать Enums
Хотя Flash не имеет встроенного класса для перечислений, существует множество доступных решений.Проверьте наш класс Enum
от Скотта Биласа: http://scottbilas.com/blog/ultimate-as3-fake-enums/
Используя его в качестве базового класса, ваш класс ObjectType
станет:
public final class ObjectType extends Enum
{
{ initEnum( ObjectType ); } // static ctor
public static const ONE:ObjectType = new ObjectType;
public static const TWO:ObjectType = new ObjectType;
public static const THREE:ObjectType = new ObjectType;
}
И ваш чек теперь станет:
public function set type(value:ObjectType):void
{
...
}
Здесь ваш установщик теперь становится безопасным по типу и будет выдавать ошибки, если используется что-то отличное от ObjectType
.